From 9b6ae962d03da4097f334b0c44c8b339c52c229b Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Fri, 21 Mar 2025 10:53:59 -0400 Subject: [PATCH] LibWebView+UI: Handle DPR for select elements like other menus The select dropdown was doing its own ad-hoc method of handling DPR. We now handle it just like other context menus. Previously, the drop down in the AppKit chrome was twice as large as it should be. --- Libraries/LibWebView/WebContentClient.cpp | 2 +- UI/AppKit/Interface/LadybirdWebView.mm | 3 +-- UI/Qt/WebContentView.cpp | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Libraries/LibWebView/WebContentClient.cpp b/Libraries/LibWebView/WebContentClient.cpp index d822bc4e88d..feef3aee2f3 100644 --- a/Libraries/LibWebView/WebContentClient.cpp +++ b/Libraries/LibWebView/WebContentClient.cpp @@ -610,7 +610,7 @@ void WebContentClient::did_request_select_dropdown(u64 page_id, Gfx::IntPoint co { if (auto view = view_for_page_id(page_id); view.has_value()) { if (view->on_request_select_dropdown) - view->on_request_select_dropdown(content_position, minimum_width, items); + view->on_request_select_dropdown(view->to_widget_position(content_position), minimum_width / view->device_pixel_ratio(), items); } } diff --git a/UI/AppKit/Interface/LadybirdWebView.mm b/UI/AppKit/Interface/LadybirdWebView.mm index db2a3808a4c..1d94b306e83 100644 --- a/UI/AppKit/Interface/LadybirdWebView.mm +++ b/UI/AppKit/Interface/LadybirdWebView.mm @@ -963,8 +963,7 @@ static void copy_data_to_clipboard(StringView data, NSPasteboardType pasteboard_ [self.select_dropdown addItem:[NSMenuItem separatorItem]]; } - auto device_pixel_ratio = m_web_view_bridge->device_pixel_ratio(); - auto* event = Ladybird::create_context_menu_mouse_event(self, Gfx::IntPoint { content_position.x() / device_pixel_ratio, content_position.y() / device_pixel_ratio }); + auto* event = Ladybird::create_context_menu_mouse_event(self, content_position); [NSMenu popUpContextMenu:self.select_dropdown withEvent:event forView:self]; }; diff --git a/UI/Qt/WebContentView.cpp b/UI/Qt/WebContentView.cpp index d985a485dd9..97949d16e31 100644 --- a/UI/Qt/WebContentView.cpp +++ b/UI/Qt/WebContentView.cpp @@ -133,7 +133,7 @@ WebContentView::WebContentView(QWidget* window, RefPtr items) { m_select_dropdown->clear(); - m_select_dropdown->setMinimumWidth(minimum_width / device_pixel_ratio()); + m_select_dropdown->setMinimumWidth(minimum_width); auto add_menu_item = [this](Web::HTML::SelectItemOption const& item_option, bool in_option_group) { QAction* action = new QAction(qstring_from_ak_string(in_option_group ? MUST(String::formatted(" {}", item_option.label)) : item_option.label), this);