1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 03:57:44 +00:00

LibWeb: Make context menus work in WebContentView

As usual, this was just a matter of plumbing the PageClient calls from
the WebContent side over to the WebContentView side. :^)
This commit is contained in:
Andreas Kling 2020-07-07 12:24:29 +02:00
parent 81ea9d1ef6
commit 92374fc942
7 changed files with 40 additions and 0 deletions

View file

@ -129,3 +129,13 @@ void WebContentClient::handle(const Messages::WebContentClient::DidStartLoading&
{
m_view.notify_server_did_start_loading({}, message.url());
}
void WebContentClient::handle(const Messages::WebContentClient::DidRequestContextMenu& message)
{
m_view.notify_server_did_request_context_menu({}, message.content_position());
}
void WebContentClient::handle(const Messages::WebContentClient::DidRequestLinkContextMenu& message)
{
m_view.notify_server_did_request_link_context_menu({}, message.content_position(), message.url(), message.target(), message.modifiers());
}

View file

@ -56,6 +56,8 @@ private:
virtual void handle(const Messages::WebContentClient::DidClickLink&) override;
virtual void handle(const Messages::WebContentClient::DidMiddleClickLink&) override;
virtual void handle(const Messages::WebContentClient::DidStartLoading&) override;
virtual void handle(const Messages::WebContentClient::DidRequestContextMenu&) override;
virtual void handle(const Messages::WebContentClient::DidRequestLinkContextMenu&) override;
WebContentView& m_view;
};

View file

@ -162,6 +162,18 @@ void WebContentView::notify_server_did_start_loading(Badge<WebContentClient>, co
on_load_start(url);
}
void WebContentView::notify_server_did_request_context_menu(Badge<WebContentClient>, const Gfx::IntPoint& content_position)
{
if (on_context_menu_request)
on_context_menu_request(screen_relative_rect().location().translated(to_widget_position(content_position)));
}
void WebContentView::notify_server_did_request_link_context_menu(Badge<WebContentClient>, const Gfx::IntPoint& content_position, const URL& url, const String&, unsigned)
{
if (on_link_context_menu_request)
on_link_context_menu_request(url, screen_relative_rect().location().translated(to_widget_position(content_position)));
}
void WebContentView::did_scroll()
{
client().post_message(Messages::WebContentServer::SetViewportRect(visible_content_rect()));

View file

@ -55,6 +55,8 @@ public:
void notify_server_did_click_link(Badge<WebContentClient>, const URL&, const String& target, unsigned modifiers);
void notify_server_did_middle_click_link(Badge<WebContentClient>, const URL&, const String& target, unsigned modifiers);
void notify_server_did_start_loading(Badge<WebContentClient>, const URL&);
void notify_server_did_request_context_menu(Badge<WebContentClient>, const Gfx::IntPoint&);
void notify_server_did_request_link_context_menu(Badge<WebContentClient>, const Gfx::IntPoint&, const URL&, const String& target, unsigned modifiers);
private:
WebContentView();