1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 09:17:45 +00:00

LibWeb+WebContent: Support image context menus in OOPWV

You can now right-click images in web content and get a context menu.
This commit is contained in:
Andreas Kling 2021-04-11 16:49:25 +02:00
parent e43fba0c58
commit 54cd8dfc4d
7 changed files with 22 additions and 2 deletions

View file

@ -322,6 +322,12 @@ void OutOfProcessWebView::notify_server_did_request_link_context_menu(Badge<WebC
on_link_context_menu_request(url, screen_relative_rect().location().translated(to_widget_position(content_position)));
}
void OutOfProcessWebView::notify_server_did_request_image_context_menu(Badge<WebContentClient>, const Gfx::IntPoint& content_position, const URL& url, const String&, unsigned, const Gfx::ShareableBitmap& bitmap)
{
if (on_image_context_menu_request)
on_image_context_menu_request(url, screen_relative_rect().location().translated(to_widget_position(content_position)), bitmap);
}
void OutOfProcessWebView::notify_server_did_request_alert(Badge<WebContentClient>, const String& message)
{
GUI::MessageBox::show(window(), message, "Alert", GUI::MessageBox::Type::Information);

View file

@ -72,6 +72,7 @@ public:
void notify_server_did_finish_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);
void notify_server_did_request_image_context_menu(Badge<WebContentClient>, const Gfx::IntPoint&, const URL&, const String& target, unsigned modifiers, const Gfx::ShareableBitmap&);
void notify_server_did_request_alert(Badge<WebContentClient>, const String& message);
bool notify_server_did_request_confirm(Badge<WebContentClient>, const String& message);
String notify_server_did_request_prompt(Badge<WebContentClient>, const String& message, const String& default_);

View file

@ -155,6 +155,11 @@ void WebContentClient::handle(const Messages::WebContentClient::DidRequestLinkCo
m_view.notify_server_did_request_link_context_menu({}, message.content_position(), message.url(), message.target(), message.modifiers());
}
void WebContentClient::handle(const Messages::WebContentClient::DidRequestImageContextMenu& message)
{
m_view.notify_server_did_request_image_context_menu({}, message.content_position(), message.url(), message.target(), message.modifiers(), message.bitmap());
}
void WebContentClient::handle(const Messages::WebContentClient::DidGetSource& message)
{
m_view.notify_server_did_get_source(message.url(), message.source());

View file

@ -68,6 +68,7 @@ private:
virtual void handle(const Messages::WebContentClient::DidStartLoading&) override;
virtual void handle(const Messages::WebContentClient::DidRequestContextMenu&) override;
virtual void handle(const Messages::WebContentClient::DidRequestLinkContextMenu&) override;
virtual void handle(const Messages::WebContentClient::DidRequestImageContextMenu&) override;
virtual void handle(const Messages::WebContentClient::DidGetSource&) override;
virtual void handle(const Messages::WebContentClient::DidJSConsoleOutput&) override;
virtual void handle(const Messages::WebContentClient::DidChangeFavicon&) override;