From 00fe122b0a4a39625737672aacce350cdc4cac14 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Wed, 23 Aug 2023 10:43:27 -0400 Subject: [PATCH] Ladybird+LibWebView: Migrate cursor changes to LibWebView callbacks --- Ladybird/AppKit/UI/LadybirdWebViewBridge.cpp | 6 ------ Ladybird/AppKit/UI/LadybirdWebViewBridge.h | 3 --- Ladybird/Qt/WebContentView.cpp | 6 +++++- Ladybird/Qt/WebContentView.h | 2 +- Userland/Libraries/LibWebView/OutOfProcessWebView.cpp | 9 ++++----- Userland/Libraries/LibWebView/OutOfProcessWebView.h | 1 - Userland/Libraries/LibWebView/ViewImplementation.h | 2 +- Userland/Libraries/LibWebView/WebContentClient.cpp | 4 +++- Userland/Utilities/headless-browser.cpp | 1 - 9 files changed, 14 insertions(+), 20 deletions(-) diff --git a/Ladybird/AppKit/UI/LadybirdWebViewBridge.cpp b/Ladybird/AppKit/UI/LadybirdWebViewBridge.cpp index 803c33aaa5..f77d524c4f 100644 --- a/Ladybird/AppKit/UI/LadybirdWebViewBridge.cpp +++ b/Ladybird/AppKit/UI/LadybirdWebViewBridge.cpp @@ -104,12 +104,6 @@ Optional WebViewBridge::paintable() return Paintable { *bitmap, bitmap_size }; } -void WebViewBridge::notify_server_did_request_cursor_change(Badge, Gfx::StandardCursor cursor) -{ - if (on_cursor_change) - on_cursor_change(cursor); -} - void WebViewBridge::notify_server_did_request_scroll(Badge, i32 x_delta, i32 y_delta) { // FIXME: This currently isn't reached because we do not yet propagate mouse wheel events to WebContent. diff --git a/Ladybird/AppKit/UI/LadybirdWebViewBridge.h b/Ladybird/AppKit/UI/LadybirdWebViewBridge.h index 7105271dd8..e17226a58d 100644 --- a/Ladybird/AppKit/UI/LadybirdWebViewBridge.h +++ b/Ladybird/AppKit/UI/LadybirdWebViewBridge.h @@ -51,15 +51,12 @@ public: Function on_scroll; - Function on_cursor_change; - Function on_tooltip_entered; Function on_tooltip_left; private: WebViewBridge(Vector screen_rects, float device_pixel_ratio, Optional webdriver_content_ipc_path); - virtual void notify_server_did_request_cursor_change(Badge, Gfx::StandardCursor cursor) override; virtual void notify_server_did_request_scroll(Badge, i32, i32) override; virtual void notify_server_did_request_scroll_to(Badge, Gfx::IntPoint) override; virtual void notify_server_did_request_scroll_into_view(Badge, Gfx::IntRect const&) override; diff --git a/Ladybird/Qt/WebContentView.cpp b/Ladybird/Qt/WebContentView.cpp index 347910bf73..1371e1c732 100644 --- a/Ladybird/Qt/WebContentView.cpp +++ b/Ladybird/Qt/WebContentView.cpp @@ -88,6 +88,10 @@ WebContentView::WebContentView(StringView webdriver_content_ipc_path, WebView::E on_ready_to_paint = [this]() { viewport()->update(); }; + + on_cursor_change = [this](auto cursor) { + update_cursor(cursor); + }; } WebContentView::~WebContentView() = default; @@ -600,7 +604,7 @@ void WebContentView::create_client(WebView::EnableCallgrindProfiling enable_call client().async_connect_to_webdriver(m_webdriver_content_ipc_path); } -void WebContentView::notify_server_did_request_cursor_change(Badge, Gfx::StandardCursor cursor) +void WebContentView::update_cursor(Gfx::StandardCursor cursor) { switch (cursor) { case Gfx::StandardCursor::Hidden: diff --git a/Ladybird/Qt/WebContentView.h b/Ladybird/Qt/WebContentView.h index bd186b1aa6..4a3a0d4d87 100644 --- a/Ladybird/Qt/WebContentView.h +++ b/Ladybird/Qt/WebContentView.h @@ -76,7 +76,6 @@ public: }; void update_palette(PaletteMode = PaletteMode::Default); - virtual void notify_server_did_request_cursor_change(Badge, Gfx::StandardCursor cursor) override; virtual void notify_server_did_request_scroll(Badge, i32, i32) override; virtual void notify_server_did_request_scroll_to(Badge, Gfx::IntPoint) override; virtual void notify_server_did_request_scroll_into_view(Badge, Gfx::IntRect const&) override; @@ -96,6 +95,7 @@ private: virtual Gfx::IntPoint to_widget_position(Gfx::IntPoint content_position) const override; void update_viewport_rect(); + void update_cursor(Gfx::StandardCursor cursor); qreal m_inverse_pixel_scaling_ratio { 1.0 }; bool m_should_show_line_box_borders { false }; diff --git a/Userland/Libraries/LibWebView/OutOfProcessWebView.cpp b/Userland/Libraries/LibWebView/OutOfProcessWebView.cpp index 6d745d97bc..5cdaf58438 100644 --- a/Userland/Libraries/LibWebView/OutOfProcessWebView.cpp +++ b/Userland/Libraries/LibWebView/OutOfProcessWebView.cpp @@ -45,6 +45,10 @@ OutOfProcessWebView::OutOfProcessWebView() else client().async_handle_file_return(0, IPC::File(file.value().stream()), request_id); }; + + on_cursor_change = [this](auto cursor) { + set_override_cursor(cursor); + }; } OutOfProcessWebView::~OutOfProcessWebView() = default; @@ -183,11 +187,6 @@ void OutOfProcessWebView::screen_rects_change_event(GUI::ScreenRectsChangeEvent& client().async_update_screen_rects(event.rects(), event.main_screen_index()); } -void OutOfProcessWebView::notify_server_did_request_cursor_change(Badge, Gfx::StandardCursor cursor) -{ - set_override_cursor(cursor); -} - void OutOfProcessWebView::notify_server_did_request_scroll(Badge, i32 x_delta, i32 y_delta) { horizontal_scrollbar().increase_slider_by(x_delta); diff --git a/Userland/Libraries/LibWebView/OutOfProcessWebView.h b/Userland/Libraries/LibWebView/OutOfProcessWebView.h index 410a5241a9..1a7dff276c 100644 --- a/Userland/Libraries/LibWebView/OutOfProcessWebView.h +++ b/Userland/Libraries/LibWebView/OutOfProcessWebView.h @@ -82,7 +82,6 @@ private: // ^WebView::ViewImplementation virtual void create_client(EnableCallgrindProfiling = EnableCallgrindProfiling::No) override; virtual void update_zoom() override; - virtual void notify_server_did_request_cursor_change(Badge, Gfx::StandardCursor cursor) override; virtual void notify_server_did_request_scroll(Badge, i32, i32) override; virtual void notify_server_did_request_scroll_to(Badge, Gfx::IntPoint) override; virtual void notify_server_did_request_scroll_into_view(Badge, Gfx::IntRect const&) override; diff --git a/Userland/Libraries/LibWebView/ViewImplementation.h b/Userland/Libraries/LibWebView/ViewImplementation.h index 3300fcbac0..99ccf3569a 100644 --- a/Userland/Libraries/LibWebView/ViewImplementation.h +++ b/Userland/Libraries/LibWebView/ViewImplementation.h @@ -115,6 +115,7 @@ public: Function on_navigate_forward; Function on_refresh; Function on_favicon_change; + Function on_cursor_change; Function on_request_alert; Function on_request_confirm; Function on_request_prompt; @@ -140,7 +141,6 @@ public: Function on_minimize_window; Function on_fullscreen_window; - virtual void notify_server_did_request_cursor_change(Badge, Gfx::StandardCursor cursor) = 0; virtual void notify_server_did_request_scroll(Badge, i32, i32) = 0; virtual void notify_server_did_request_scroll_to(Badge, Gfx::IntPoint) = 0; virtual void notify_server_did_request_scroll_into_view(Badge, Gfx::IntRect const&) = 0; diff --git a/Userland/Libraries/LibWebView/WebContentClient.cpp b/Userland/Libraries/LibWebView/WebContentClient.cpp index 6adf8b7a6c..0c2695ab60 100644 --- a/Userland/Libraries/LibWebView/WebContentClient.cpp +++ b/Userland/Libraries/LibWebView/WebContentClient.cpp @@ -82,7 +82,9 @@ void WebContentClient::did_request_cursor_change(i32 cursor_type) dbgln("DidRequestCursorChange: Bad cursor type"); return; } - m_view.notify_server_did_request_cursor_change({}, (Gfx::StandardCursor)cursor_type); + + if (m_view.on_cursor_change) + m_view.on_cursor_change(static_cast(cursor_type)); } void WebContentClient::did_layout(Gfx::IntSize content_size) diff --git a/Userland/Utilities/headless-browser.cpp b/Userland/Utilities/headless-browser.cpp index 6f231dbefa..c62330eec0 100644 --- a/Userland/Utilities/headless-browser.cpp +++ b/Userland/Utilities/headless-browser.cpp @@ -102,7 +102,6 @@ public: private: HeadlessWebContentView() = default; - void notify_server_did_request_cursor_change(Badge, Gfx::StandardCursor) override { } void notify_server_did_request_scroll(Badge, i32, i32) override { } void notify_server_did_request_scroll_to(Badge, Gfx::IntPoint) override { } void notify_server_did_request_scroll_into_view(Badge, Gfx::IntRect const&) override { }