From 88d134a4dab6ff272ff73b5de6f40d4295577259 Mon Sep 17 00:00:00 2001 From: Tim Ledbetter Date: Thu, 13 Jun 2024 21:09:49 +0100 Subject: [PATCH] UI/Qt: Add standard shortcuts for find in page actions This commit adds the standard shortcuts for the Find Next and Find Previous buttons on the find in page panel. These shortcuts are usually F3 and Shift+F3 respectively, although Qt standard shortcuts may vary across platforms. --- Ladybird/Qt/BrowserWindow.cpp | 14 ++++++++++++++ Ladybird/Qt/FindInPageWidget.cpp | 10 ++++++++++ Ladybird/Qt/FindInPageWidget.h | 3 +++ Ladybird/Qt/Tab.cpp | 10 ++++++++++ Ladybird/Qt/Tab.h | 2 ++ 5 files changed, 39 insertions(+) diff --git a/Ladybird/Qt/BrowserWindow.cpp b/Ladybird/Qt/BrowserWindow.cpp index 1547ff3c9d4..3f377cb6adf 100644 --- a/Ladybird/Qt/BrowserWindow.cpp +++ b/Ladybird/Qt/BrowserWindow.cpp @@ -157,6 +157,20 @@ BrowserWindow::BrowserWindow(Vector const& initial_urls, WebView::Cook m_find_in_page_action->setIcon(load_icon_from_uri("resource://icons/16x16/find.png"sv)); m_find_in_page_action->setShortcuts(QKeySequence::keyBindings(QKeySequence::StandardKey::Find)); + auto find_previous_shortcuts = QKeySequence::keyBindings(QKeySequence::StandardKey::FindPrevious); + for (auto const& shortcut : find_previous_shortcuts) + new QShortcut(shortcut, this, [this] { + if (m_current_tab) + m_current_tab->find_previous(); + }); + + auto find_next_shortcuts = QKeySequence::keyBindings(QKeySequence::StandardKey::FindNext); + for (auto const& shortcut : find_next_shortcuts) + new QShortcut(shortcut, this, [this] { + if (m_current_tab) + m_current_tab->find_next(); + }); + edit_menu->addAction(m_find_in_page_action); QObject::connect(m_find_in_page_action, &QAction::triggered, this, &BrowserWindow::show_find_in_page); diff --git a/Ladybird/Qt/FindInPageWidget.cpp b/Ladybird/Qt/FindInPageWidget.cpp index 062e7f2e7c4..dc8cf250d3b 100644 --- a/Ladybird/Qt/FindInPageWidget.cpp +++ b/Ladybird/Qt/FindInPageWidget.cpp @@ -142,4 +142,14 @@ void FindInPageWidget::update_result_label(size_t current_match_index, Optional< } } +void FindInPageWidget::find_previous() +{ + m_previous_button->click(); +} + +void FindInPageWidget::find_next() +{ + m_next_button->click(); +} + } diff --git a/Ladybird/Qt/FindInPageWidget.h b/Ladybird/Qt/FindInPageWidget.h index 6dab1bc9018..e3eee76c3f2 100644 --- a/Ladybird/Qt/FindInPageWidget.h +++ b/Ladybird/Qt/FindInPageWidget.h @@ -26,6 +26,9 @@ public: void update_result_label(size_t current_match_index, Optional const& total_match_count); + void find_previous(); + void find_next(); + virtual ~FindInPageWidget() override; public slots: diff --git a/Ladybird/Qt/Tab.cpp b/Ladybird/Qt/Tab.cpp index d00db16a710..88fe63f6f79 100644 --- a/Ladybird/Qt/Tab.cpp +++ b/Ladybird/Qt/Tab.cpp @@ -950,6 +950,16 @@ void Tab::show_find_in_page() m_find_in_page->setFocus(); } +void Tab::find_previous() +{ + m_find_in_page->find_previous(); +} + +void Tab::find_next() +{ + m_find_in_page->find_next(); +} + void Tab::close_sub_widgets() { auto close_widget_window = [](auto* widget) { diff --git a/Ladybird/Qt/Tab.h b/Ladybird/Qt/Tab.h index 9d2ebe28778..29755a2b9ee 100644 --- a/Ladybird/Qt/Tab.h +++ b/Ladybird/Qt/Tab.h @@ -53,6 +53,8 @@ public: void show_inspector_window(InspectorTarget = InspectorTarget::Document); void show_find_in_page(); + void find_previous(); + void find_next(); QIcon const& favicon() const { return m_favicon; } QString const& title() const { return m_title; }