diff --git a/Userland/Libraries/LibWeb/OutOfProcessWebView.cpp b/Userland/Libraries/LibWeb/OutOfProcessWebView.cpp index 6484b9828f..637dc76c38 100644 --- a/Userland/Libraries/LibWeb/OutOfProcessWebView.cpp +++ b/Userland/Libraries/LibWeb/OutOfProcessWebView.cpp @@ -28,6 +28,7 @@ #include "WebContentClient.h" #include #include +#include #include #include #include @@ -255,6 +256,16 @@ void OutOfProcessWebView::notify_server_did_request_scroll_into_view(Badge, const Gfx::IntPoint&, const String& title) +{ + GUI::Application::the()->show_tooltip(title, nullptr); +} + +void OutOfProcessWebView::notify_server_did_leave_tooltip_area(Badge) +{ + GUI::Application::the()->hide_tooltip(); +} + void OutOfProcessWebView::notify_server_did_hover_link(Badge, const URL& url) { if (on_link_hover) diff --git a/Userland/Libraries/LibWeb/OutOfProcessWebView.h b/Userland/Libraries/LibWeb/OutOfProcessWebView.h index 11405a98a2..e0fccc6ae7 100644 --- a/Userland/Libraries/LibWeb/OutOfProcessWebView.h +++ b/Userland/Libraries/LibWeb/OutOfProcessWebView.h @@ -62,6 +62,8 @@ public: void notify_server_did_change_title(Badge, const String&); void notify_server_did_request_scroll(Badge, int); void notify_server_did_request_scroll_into_view(Badge, const Gfx::IntRect&); + void notify_server_did_enter_tooltip_area(Badge, const Gfx::IntPoint&, const String&); + void notify_server_did_leave_tooltip_area(Badge); void notify_server_did_hover_link(Badge, const URL&); void notify_server_did_unhover_link(Badge); void notify_server_did_click_link(Badge, const URL&, const String& target, unsigned modifiers); diff --git a/Userland/Libraries/LibWeb/WebContentClient.cpp b/Userland/Libraries/LibWeb/WebContentClient.cpp index f049f21cb2..3988db3d8e 100644 --- a/Userland/Libraries/LibWeb/WebContentClient.cpp +++ b/Userland/Libraries/LibWeb/WebContentClient.cpp @@ -106,6 +106,16 @@ void WebContentClient::handle(const Messages::WebContentClient::DidRequestScroll m_view.notify_server_did_request_scroll_into_view({}, message.rect()); } +void WebContentClient::handle(const Messages::WebContentClient::DidEnterTooltipArea& message) +{ + m_view.notify_server_did_enter_tooltip_area({}, message.content_position(), message.title()); +} + +void WebContentClient::handle(const Messages::WebContentClient::DidLeaveTooltipArea&) +{ + m_view.notify_server_did_leave_tooltip_area({}); +} + void WebContentClient::handle(const Messages::WebContentClient::DidHoverLink& message) { dbgln_if(SPAM_DEBUG, "handle: WebContentClient::DidHoverLink! url={}", message.url()); diff --git a/Userland/Libraries/LibWeb/WebContentClient.h b/Userland/Libraries/LibWeb/WebContentClient.h index 9357930f2a..17ae95d91c 100644 --- a/Userland/Libraries/LibWeb/WebContentClient.h +++ b/Userland/Libraries/LibWeb/WebContentClient.h @@ -59,6 +59,8 @@ private: virtual void handle(const Messages::WebContentClient::DidChangeTitle&) override; virtual void handle(const Messages::WebContentClient::DidRequestScroll&) override; virtual void handle(const Messages::WebContentClient::DidRequestScrollIntoView&) override; + virtual void handle(const Messages::WebContentClient::DidEnterTooltipArea&) override; + virtual void handle(const Messages::WebContentClient::DidLeaveTooltipArea&) override; virtual void handle(const Messages::WebContentClient::DidHoverLink&) override; virtual void handle(const Messages::WebContentClient::DidUnhoverLink&) override; virtual void handle(const Messages::WebContentClient::DidClickLink&) override; diff --git a/Userland/Services/WebContent/PageHost.cpp b/Userland/Services/WebContent/PageHost.cpp index 97aa69ff03..e688549663 100644 --- a/Userland/Services/WebContent/PageHost.cpp +++ b/Userland/Services/WebContent/PageHost.cpp @@ -133,6 +133,16 @@ void PageHost::page_did_request_scroll_into_view(const Gfx::IntRect& rect) m_client.post_message(Messages::WebContentClient::DidRequestScrollIntoView(rect)); } +void PageHost::page_did_enter_tooltip_area(const Gfx::IntPoint& content_position, const String& title) +{ + m_client.post_message(Messages::WebContentClient::DidEnterTooltipArea(content_position, title)); +} + +void PageHost::page_did_leave_tooltip_area() +{ + m_client.post_message(Messages::WebContentClient::DidLeaveTooltipArea()); +} + void PageHost::page_did_hover_link(const URL& url) { m_client.post_message(Messages::WebContentClient::DidHoverLink(url)); diff --git a/Userland/Services/WebContent/PageHost.h b/Userland/Services/WebContent/PageHost.h index 0bbb20fe3e..44aee5ffbd 100644 --- a/Userland/Services/WebContent/PageHost.h +++ b/Userland/Services/WebContent/PageHost.h @@ -61,6 +61,8 @@ private: virtual void page_did_change_title(const String&) override; virtual void page_did_request_scroll(int) 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; virtual void page_did_hover_link(const URL&) override; virtual void page_did_unhover_link() override; virtual void page_did_click_link(const URL&, const String& target, unsigned modifiers) override; diff --git a/Userland/Services/WebContent/WebContentClient.ipc b/Userland/Services/WebContent/WebContentClient.ipc index 6e96fa94ba..baa51492ad 100644 --- a/Userland/Services/WebContent/WebContentClient.ipc +++ b/Userland/Services/WebContent/WebContentClient.ipc @@ -10,6 +10,8 @@ endpoint WebContentClient = 90 DidChangeTitle(String title) =| DidRequestScroll(int wheel_delta) =| DidRequestScrollIntoView(Gfx::IntRect rect) =| + DidEnterTooltipArea(Gfx::IntPoint content_position, String title) =| + DidLeaveTooltipArea() =| DidHoverLink(URL url) =| DidUnhoverLink() =| DidClickLink(URL url, String target, unsigned modifiers) =|