mirror of
https://github.com/RGBCube/serenity
synced 2025-07-24 18:57:42 +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:
parent
e43fba0c58
commit
54cd8dfc4d
7 changed files with 22 additions and 2 deletions
|
@ -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)));
|
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)
|
void OutOfProcessWebView::notify_server_did_request_alert(Badge<WebContentClient>, const String& message)
|
||||||
{
|
{
|
||||||
GUI::MessageBox::show(window(), message, "Alert", GUI::MessageBox::Type::Information);
|
GUI::MessageBox::show(window(), message, "Alert", GUI::MessageBox::Type::Information);
|
||||||
|
|
|
@ -72,6 +72,7 @@ public:
|
||||||
void notify_server_did_finish_loading(Badge<WebContentClient>, const URL&);
|
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_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_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);
|
void notify_server_did_request_alert(Badge<WebContentClient>, const String& message);
|
||||||
bool notify_server_did_request_confirm(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_);
|
String notify_server_did_request_prompt(Badge<WebContentClient>, const String& message, const String& default_);
|
||||||
|
|
|
@ -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());
|
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)
|
void WebContentClient::handle(const Messages::WebContentClient::DidGetSource& message)
|
||||||
{
|
{
|
||||||
m_view.notify_server_did_get_source(message.url(), message.source());
|
m_view.notify_server_did_get_source(message.url(), message.source());
|
||||||
|
|
|
@ -68,6 +68,7 @@ private:
|
||||||
virtual void handle(const Messages::WebContentClient::DidStartLoading&) override;
|
virtual void handle(const Messages::WebContentClient::DidStartLoading&) override;
|
||||||
virtual void handle(const Messages::WebContentClient::DidRequestContextMenu&) override;
|
virtual void handle(const Messages::WebContentClient::DidRequestContextMenu&) override;
|
||||||
virtual void handle(const Messages::WebContentClient::DidRequestLinkContextMenu&) 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::DidGetSource&) override;
|
||||||
virtual void handle(const Messages::WebContentClient::DidJSConsoleOutput&) override;
|
virtual void handle(const Messages::WebContentClient::DidJSConsoleOutput&) override;
|
||||||
virtual void handle(const Messages::WebContentClient::DidChangeFavicon&) override;
|
virtual void handle(const Messages::WebContentClient::DidChangeFavicon&) override;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
|
* Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org>
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -203,4 +203,9 @@ void PageHost::page_did_change_favicon(const Gfx::Bitmap& favicon)
|
||||||
m_client.post_message(Messages::WebContentClient::DidChangeFavicon(favicon.to_shareable_bitmap()));
|
m_client.post_message(Messages::WebContentClient::DidChangeFavicon(favicon.to_shareable_bitmap()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PageHost::page_did_request_image_context_menu(const Gfx::IntPoint& content_position, const URL& url, const String& target, unsigned modifiers, const Gfx::Bitmap* bitmap)
|
||||||
|
{
|
||||||
|
m_client.post_message(Messages::WebContentClient::DidRequestImageContextMenu(content_position, url, target, modifiers, bitmap->to_shareable_bitmap()));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
|
* Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org>
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -78,6 +78,7 @@ private:
|
||||||
virtual bool page_did_request_confirm(const String&) override;
|
virtual bool page_did_request_confirm(const String&) override;
|
||||||
virtual String page_did_request_prompt(const String&, const String&) override;
|
virtual String page_did_request_prompt(const String&, const String&) override;
|
||||||
virtual void page_did_change_favicon(const Gfx::Bitmap&) override;
|
virtual void page_did_change_favicon(const Gfx::Bitmap&) override;
|
||||||
|
virtual void page_did_request_image_context_menu(const Gfx::IntPoint&, const URL&, const String& target, unsigned modifiers, const Gfx::Bitmap*) override;
|
||||||
|
|
||||||
explicit PageHost(ClientConnection&);
|
explicit PageHost(ClientConnection&);
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ endpoint WebContentClient = 90
|
||||||
DidMiddleClickLink(URL url, String target, unsigned modifiers) =|
|
DidMiddleClickLink(URL url, String target, unsigned modifiers) =|
|
||||||
DidRequestContextMenu(Gfx::IntPoint content_position) =|
|
DidRequestContextMenu(Gfx::IntPoint content_position) =|
|
||||||
DidRequestLinkContextMenu(Gfx::IntPoint content_position, URL url, String target, unsigned modifiers) =|
|
DidRequestLinkContextMenu(Gfx::IntPoint content_position, URL url, String target, unsigned modifiers) =|
|
||||||
|
DidRequestImageContextMenu(Gfx::IntPoint content_position, URL url, String target, unsigned modifiers, Gfx::ShareableBitmap bitmap) =|
|
||||||
DidRequestAlert(String message) => ()
|
DidRequestAlert(String message) => ()
|
||||||
DidRequestConfirm(String message) => (bool result)
|
DidRequestConfirm(String message) => (bool result)
|
||||||
DidRequestPrompt(String message, String default_) => (String response)
|
DidRequestPrompt(String message, String default_) => (String response)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue