mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 11:18:11 +00:00
WebContent: Plumb scroll-into-view requests from server to client
The WebContentView widget will now be able to react to scroll-into-view requests from the WebContent process.
This commit is contained in:
parent
56d14d5701
commit
131bc8fd31
7 changed files with 22 additions and 0 deletions
|
@ -90,3 +90,11 @@ void WebContentClient::handle(const Messages::WebContentClient::DidChangeTitle&
|
||||||
#endif
|
#endif
|
||||||
m_view.notify_server_did_change_title({}, message.title());
|
m_view.notify_server_did_change_title({}, message.title());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WebContentClient::handle(const Messages::WebContentClient::DidRequestScrollIntoView& message)
|
||||||
|
{
|
||||||
|
#ifdef DEBUG_SPAM
|
||||||
|
dbg() << "handle: WebContentClient::DidRequestScrollIntoView! rect=" << message.rect();
|
||||||
|
#endif
|
||||||
|
m_view.notify_server_did_request_scroll_into_view({}, message.rect());
|
||||||
|
}
|
||||||
|
|
|
@ -50,6 +50,7 @@ private:
|
||||||
virtual void handle(const Messages::WebContentClient::DidChangeSelection&) override;
|
virtual void handle(const Messages::WebContentClient::DidChangeSelection&) override;
|
||||||
virtual void handle(const Messages::WebContentClient::DidLayout&) override;
|
virtual void handle(const Messages::WebContentClient::DidLayout&) override;
|
||||||
virtual void handle(const Messages::WebContentClient::DidChangeTitle&) override;
|
virtual void handle(const Messages::WebContentClient::DidChangeTitle&) override;
|
||||||
|
virtual void handle(const Messages::WebContentClient::DidRequestScrollIntoView&) override;
|
||||||
|
|
||||||
WebContentView& m_view;
|
WebContentView& m_view;
|
||||||
};
|
};
|
||||||
|
|
|
@ -115,6 +115,11 @@ void WebContentView::notify_server_did_change_title(Badge<WebContentClient>, con
|
||||||
on_title_change(title);
|
on_title_change(title);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WebContentView::notify_server_did_request_scroll_into_view(Badge<WebContentClient>, const Gfx::IntRect& rect)
|
||||||
|
{
|
||||||
|
scroll_into_view(rect, true, true);
|
||||||
|
}
|
||||||
|
|
||||||
void WebContentView::did_scroll()
|
void WebContentView::did_scroll()
|
||||||
{
|
{
|
||||||
client().post_message(Messages::WebContentServer::SetViewportRect(visible_content_rect()));
|
client().post_message(Messages::WebContentServer::SetViewportRect(visible_content_rect()));
|
||||||
|
|
|
@ -46,6 +46,7 @@ public:
|
||||||
void notify_server_did_invalidate_content_rect(Badge<WebContentClient>, const Gfx::IntRect&);
|
void notify_server_did_invalidate_content_rect(Badge<WebContentClient>, const Gfx::IntRect&);
|
||||||
void notify_server_did_change_selection(Badge<WebContentClient>);
|
void notify_server_did_change_selection(Badge<WebContentClient>);
|
||||||
void notify_server_did_change_title(Badge<WebContentClient>, const String&);
|
void notify_server_did_change_title(Badge<WebContentClient>, const String&);
|
||||||
|
void notify_server_did_request_scroll_into_view(Badge<WebContentClient>, const Gfx::IntRect&);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
WebContentView();
|
WebContentView();
|
||||||
|
|
|
@ -129,4 +129,9 @@ void PageHost::page_did_change_title(const String& title)
|
||||||
m_client.post_message(Messages::WebContentClient::DidChangeTitle(title));
|
m_client.post_message(Messages::WebContentClient::DidChangeTitle(title));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PageHost::page_did_request_scroll_into_view(const Gfx::IntRect& rect)
|
||||||
|
{
|
||||||
|
m_client.post_message(Messages::WebContentClient::DidRequestScrollIntoView(rect));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,6 +55,7 @@ private:
|
||||||
virtual void page_did_change_selection() override;
|
virtual void page_did_change_selection() override;
|
||||||
virtual void page_did_layout() override;
|
virtual void page_did_layout() override;
|
||||||
virtual void page_did_change_title(const String&) override;
|
virtual void page_did_change_title(const String&) override;
|
||||||
|
virtual void page_did_request_scroll_into_view(const Gfx::IntRect&) override;
|
||||||
|
|
||||||
explicit PageHost(ClientConnection&);
|
explicit PageHost(ClientConnection&);
|
||||||
|
|
||||||
|
|
|
@ -6,4 +6,5 @@ endpoint WebContentClient = 90
|
||||||
DidChangeSelection() =|
|
DidChangeSelection() =|
|
||||||
DidLayout(Gfx::IntSize content_size) =|
|
DidLayout(Gfx::IntSize content_size) =|
|
||||||
DidChangeTitle(String title) =|
|
DidChangeTitle(String title) =|
|
||||||
|
DidRequestScrollIntoView(Gfx::IntRect rect) =|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue