diff options
author | Linus Groh <mail@linusgroh.de> | 2021-04-04 00:12:37 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-04-04 00:37:54 +0200 |
commit | e8739ddab76478b245b6c5c604988364a9191bd0 (patch) | |
tree | 5d9af0ab2b59df88fddd5b742e5475e0a78148f9 /Userland/Libraries | |
parent | 96b26ec125340b7a0b29754215dc24f372b6d737 (diff) | |
download | serenity-e8739ddab76478b245b6c5c604988364a9191bd0.zip |
LibWeb+WebContent: Keep track of screen rect
It is now possible to get the up-to-date screen rect from a Web::Page.
Diffstat (limited to 'Userland/Libraries')
-rw-r--r-- | Userland/Libraries/LibWeb/InProcessWebView.h | 4 | ||||
-rw-r--r-- | Userland/Libraries/LibWeb/OutOfProcessWebView.cpp | 7 | ||||
-rw-r--r-- | Userland/Libraries/LibWeb/OutOfProcessWebView.h | 1 | ||||
-rw-r--r-- | Userland/Libraries/LibWeb/Page/Page.cpp | 5 | ||||
-rw-r--r-- | Userland/Libraries/LibWeb/Page/Page.h | 2 |
5 files changed, 18 insertions, 1 deletions
diff --git a/Userland/Libraries/LibWeb/InProcessWebView.h b/Userland/Libraries/LibWeb/InProcessWebView.h index 81538df551..7b20928bbf 100644 --- a/Userland/Libraries/LibWeb/InProcessWebView.h +++ b/Userland/Libraries/LibWeb/InProcessWebView.h @@ -27,6 +27,7 @@ #pragma once #include <AK/URL.h> +#include <LibGUI/Desktop.h> #include <LibGUI/ScrollableWidget.h> #include <LibWeb/DOM/Document.h> #include <LibWeb/Page/Page.h> @@ -85,8 +86,9 @@ private: virtual void did_scroll() override; // ^Web::PageClient - virtual Gfx::Palette palette() const override { return GUI::ScrollableWidget::palette(); } virtual bool is_multi_process() const override { return false; } + virtual Gfx::Palette palette() const override { return GUI::ScrollableWidget::palette(); } + virtual Gfx::IntRect screen_rect() const override { return GUI::Desktop::the().rect(); } virtual void page_did_change_title(const String&) override; virtual void page_did_set_document_in_main_frame(DOM::Document*) override; virtual void page_did_start_loading(const URL&) override; diff --git a/Userland/Libraries/LibWeb/OutOfProcessWebView.cpp b/Userland/Libraries/LibWeb/OutOfProcessWebView.cpp index 637dc76c38..c2c36024de 100644 --- a/Userland/Libraries/LibWeb/OutOfProcessWebView.cpp +++ b/Userland/Libraries/LibWeb/OutOfProcessWebView.cpp @@ -29,6 +29,7 @@ #include <AK/String.h> #include <AK/URLParser.h> #include <LibGUI/Application.h> +#include <LibGUI/Desktop.h> #include <LibGUI/InputBox.h> #include <LibGUI/MessageBox.h> #include <LibGUI/Painter.h> @@ -88,6 +89,7 @@ void OutOfProcessWebView::create_client() }; client().post_message(Messages::WebContentServer::UpdateSystemTheme(Gfx::current_system_theme_buffer())); + client().post_message(Messages::WebContentServer::UpdateScreenRect(GUI::Desktop::the().rect())); } void OutOfProcessWebView::load(const URL& url) @@ -208,6 +210,11 @@ void OutOfProcessWebView::theme_change_event(GUI::ThemeChangeEvent& event) request_repaint(); } +void OutOfProcessWebView::screen_rect_change_event(GUI::ScreenRectChangeEvent& event) +{ + client().post_message(Messages::WebContentServer::UpdateScreenRect(event.rect())); +} + void OutOfProcessWebView::notify_server_did_paint(Badge<WebContentClient>, i32 bitmap_id) { if (m_client_state.back_bitmap_id == bitmap_id) { diff --git a/Userland/Libraries/LibWeb/OutOfProcessWebView.h b/Userland/Libraries/LibWeb/OutOfProcessWebView.h index e0fccc6ae7..b634bc1077 100644 --- a/Userland/Libraries/LibWeb/OutOfProcessWebView.h +++ b/Userland/Libraries/LibWeb/OutOfProcessWebView.h @@ -91,6 +91,7 @@ private: virtual void mousewheel_event(GUI::MouseEvent&) override; virtual void keydown_event(GUI::KeyEvent&) override; virtual void theme_change_event(GUI::ThemeChangeEvent&) override; + virtual void screen_rect_change_event(GUI::ScreenRectChangeEvent&) override; // ^ScrollableWidget virtual void did_scroll() override; diff --git a/Userland/Libraries/LibWeb/Page/Page.cpp b/Userland/Libraries/LibWeb/Page/Page.cpp index 1ec5d15666..96b726189f 100644 --- a/Userland/Libraries/LibWeb/Page/Page.cpp +++ b/Userland/Libraries/LibWeb/Page/Page.cpp @@ -72,6 +72,11 @@ Gfx::Palette Page::palette() const return m_client.palette(); } +Gfx::IntRect Page::screen_rect() const +{ + return m_client.screen_rect(); +} + bool Page::handle_mousewheel(const Gfx::IntPoint& position, unsigned button, unsigned modifiers, int wheel_delta) { return main_frame().event_handler().handle_mousewheel(position, button, modifiers, wheel_delta); diff --git a/Userland/Libraries/LibWeb/Page/Page.h b/Userland/Libraries/LibWeb/Page/Page.h index a45072edab..6dfe853013 100644 --- a/Userland/Libraries/LibWeb/Page/Page.h +++ b/Userland/Libraries/LibWeb/Page/Page.h @@ -74,6 +74,7 @@ public: bool handle_keydown(KeyCode, unsigned modifiers, u32 code_point); Gfx::Palette palette() const; + Gfx::IntRect screen_rect() const; private: PageClient& m_client; @@ -86,6 +87,7 @@ class PageClient { public: virtual bool is_multi_process() const = 0; virtual Gfx::Palette palette() const = 0; + virtual Gfx::IntRect screen_rect() const = 0; virtual void page_did_set_document_in_main_frame(DOM::Document*) { } virtual void page_did_change_title(const String&) { } virtual void page_did_start_loading(const URL&) { } |