Sfoglia il codice sorgente

LibWeb+WebContent: Add WebContentClient::did_request_scroll_to() call

This call sets the absolute scroll position for the window.
Sam Atkins 3 anni fa
parent
commit
83414af9f3

+ 6 - 0
Userland/Libraries/LibWeb/OutOfProcessWebView.cpp

@@ -241,6 +241,12 @@ void OutOfProcessWebView::notify_server_did_request_scroll(Badge<WebContentClien
     vertical_scrollbar().set_value(vertical_scrollbar().value() + y_delta);
 }
 
+void OutOfProcessWebView::notify_server_did_request_scroll_to(Badge<WebContentClient>, Gfx::IntPoint const& scroll_position)
+{
+    horizontal_scrollbar().set_value(scroll_position.x());
+    vertical_scrollbar().set_value(scroll_position.y());
+}
+
 void OutOfProcessWebView::notify_server_did_request_scroll_into_view(Badge<WebContentClient>, const Gfx::IntRect& rect)
 {
     scroll_into_view(rect, true, true);

+ 1 - 0
Userland/Libraries/LibWeb/OutOfProcessWebView.h

@@ -58,6 +58,7 @@ public:
     void notify_server_did_request_cursor_change(Badge<WebContentClient>, Gfx::StandardCursor cursor);
     void notify_server_did_change_title(Badge<WebContentClient>, const String&);
     void notify_server_did_request_scroll(Badge<WebContentClient>, i32, i32);
+    void notify_server_did_request_scroll_to(Badge<WebContentClient>, Gfx::IntPoint const&);
     void notify_server_did_request_scroll_into_view(Badge<WebContentClient>, const Gfx::IntRect&);
     void notify_server_did_enter_tooltip_area(Badge<WebContentClient>, const Gfx::IntPoint&, const String&);
     void notify_server_did_leave_tooltip_area(Badge<WebContentClient>);

+ 1 - 0
Userland/Libraries/LibWeb/Page/Page.h

@@ -86,6 +86,7 @@ public:
     virtual void page_did_change_favicon(const Gfx::Bitmap&) { }
     virtual void page_did_layout() { }
     virtual void page_did_request_scroll(i32, i32) { }
+    virtual void page_did_request_scroll_to(Gfx::IntPoint const&) { }
     virtual void page_did_request_scroll_into_view(const Gfx::IntRect&) { }
     virtual void page_did_request_alert(const String&) { }
     virtual bool page_did_request_confirm(const String&) { return false; }

+ 5 - 0
Userland/Libraries/LibWeb/WebContentClient.cpp

@@ -73,6 +73,11 @@ void WebContentClient::did_request_scroll(i32 x_delta, i32 y_delta)
     m_view.notify_server_did_request_scroll({}, x_delta, y_delta);
 }
 
+void WebContentClient::did_request_scroll_to(Gfx::IntPoint const& scroll_position)
+{
+    m_view.notify_server_did_request_scroll_to({}, scroll_position);
+}
+
 void WebContentClient::did_request_scroll_into_view(Gfx::IntRect const& rect)
 {
     dbgln_if(SPAM_DEBUG, "handle: WebContentClient::DidRequestScrollIntoView! rect={}", rect);

+ 1 - 0
Userland/Libraries/LibWeb/WebContentClient.h

@@ -37,6 +37,7 @@ private:
     virtual void did_layout(Gfx::IntSize const&) override;
     virtual void did_change_title(String const&) override;
     virtual void did_request_scroll(i32, i32) override;
+    virtual void did_request_scroll_to(Gfx::IntPoint const&) override;
     virtual void did_request_scroll_into_view(Gfx::IntRect const&) override;
     virtual void did_enter_tooltip_area(Gfx::IntPoint const&, String const&) override;
     virtual void did_leave_tooltip_area() override;

+ 5 - 0
Userland/Services/WebContent/PageHost.cpp

@@ -109,6 +109,11 @@ void PageHost::page_did_request_scroll(i32 x_delta, i32 y_delta)
     m_client.async_did_request_scroll(x_delta, y_delta);
 }
 
+void PageHost::page_did_request_scroll_to(Gfx::IntPoint const& scroll_position)
+{
+    m_client.async_did_request_scroll_to(scroll_position);
+}
+
 void PageHost::page_did_request_scroll_into_view(const Gfx::IntRect& rect)
 {
     m_client.async_did_request_scroll_into_view(rect);

+ 1 - 0
Userland/Services/WebContent/PageHost.h

@@ -42,6 +42,7 @@ private:
     virtual void page_did_layout() override;
     virtual void page_did_change_title(const String&) override;
     virtual void page_did_request_scroll(i32, i32) override;
+    virtual void page_did_request_scroll_to(Gfx::IntPoint const&) override;
     virtual void page_did_request_scroll_into_view(const Gfx::IntRect&) override;
     virtual void page_did_enter_tooltip_area(const Gfx::IntPoint&, const String&) override;
     virtual void page_did_leave_tooltip_area() override;

+ 1 - 0
Userland/Services/WebContent/WebContentClient.ipc

@@ -13,6 +13,7 @@ endpoint WebContentClient
     did_layout(Gfx::IntSize content_size) =|
     did_change_title(String title) =|
     did_request_scroll(i32 x_delta, i32 y_delta) =|
+    did_request_scroll_to(Gfx::IntPoint scroll_position) =|
     did_request_scroll_into_view(Gfx::IntRect rect) =|
     did_enter_tooltip_area(Gfx::IntPoint content_position, String title) =|
     did_leave_tooltip_area() =|