From 77008d4bac0b2eaf4c46e59e3d262fd89d00e355 Mon Sep 17 00:00:00 2001 From: MacDue Date: Tue, 16 May 2023 20:30:43 +0100 Subject: [PATCH] Ladybird: Fix context menus being in slightly the wrong position Previously, we were doing mapToGlobal() via the Tab widget, but the widget position was actually relative to the WebContentView. This meant context menus appeared slightly vertically offset from where you clicked. --- Ladybird/Tab.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Ladybird/Tab.cpp b/Ladybird/Tab.cpp index 26186eff59..853addbf6b 100644 --- a/Ladybird/Tab.cpp +++ b/Ladybird/Tab.cpp @@ -221,7 +221,7 @@ Tab::Tab(BrowserWindow* window, StringView webdriver_content_ipc_path, WebView:: m_page_context_menu->addAction(&m_window->inspect_dom_node_action()); view().on_context_menu_request = [this](auto widget_position) { - auto screen_position = mapToGlobal(QPoint { widget_position.x(), widget_position.y() }); + auto screen_position = view().mapToGlobal(QPoint { widget_position.x(), widget_position.y() }); m_page_context_menu->exec(screen_position); }; @@ -254,7 +254,7 @@ Tab::Tab(BrowserWindow* window, StringView webdriver_content_ipc_path, WebView:: view().on_link_context_menu_request = [this](auto const& url, auto widget_position) { m_link_context_menu_url = url; - auto screen_position = mapToGlobal(QPoint { widget_position.x(), widget_position.y() }); + auto screen_position = view().mapToGlobal(QPoint { widget_position.x(), widget_position.y() }); m_link_context_menu->exec(screen_position); }; @@ -308,7 +308,7 @@ Tab::Tab(BrowserWindow* window, StringView webdriver_content_ipc_path, WebView:: m_image_context_menu_url = image_url; m_image_context_menu_bitmap = shareable_bitmap; - auto screen_position = mapToGlobal(QPoint { widget_position.x(), widget_position.y() }); + auto screen_position = view().mapToGlobal(QPoint { widget_position.x(), widget_position.y() }); m_image_context_menu->exec(screen_position); }; @@ -377,7 +377,7 @@ Tab::Tab(BrowserWindow* window, StringView webdriver_content_ipc_path, WebView:: m_video_context_menu_controls_action->setChecked(has_user_agent_controls); m_video_context_menu_loop_action->setChecked(is_looping); - auto screen_position = mapToGlobal(QPoint { widget_position.x(), widget_position.y() }); + auto screen_position = view().mapToGlobal(QPoint { widget_position.x(), widget_position.y() }); m_video_context_menu->exec(screen_position); }; }