From 0e95e99e72237058465959d55b77750a9d7c1bef Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sat, 19 Apr 2025 17:56:03 +0530 Subject: Add web.search and search text implemnetation --- src/widgets/WebView.hpp | 1 + src/widgets/WebViewStack.cpp | 20 ++++++++++++++++++++ src/widgets/WebViewStack.hpp | 1 + 3 files changed, 22 insertions(+) (limited to 'src/widgets') diff --git a/src/widgets/WebView.hpp b/src/widgets/WebView.hpp index 3f73316..98dceba 100644 --- a/src/widgets/WebView.hpp +++ b/src/widgets/WebView.hpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "utils.hpp" diff --git a/src/widgets/WebViewStack.cpp b/src/widgets/WebViewStack.cpp index 258fbc6..16fd3e9 100644 --- a/src/widgets/WebViewStack.cpp +++ b/src/widgets/WebViewStack.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -198,6 +199,25 @@ void WebViewStack::focus_webview(WebViewId webview_id) { layout->setCurrentIndex((int)webview_index); } +void WebViewStack::set_search_text(const QString &text, WebViewId webview_id, bool forward) { + auto *webview = get_webview(webview_id); + if (webview == nullptr) { + qDebug() << "Webview does not exist"; + return; + } + + QString search_text = text.trimmed(); + + auto flags = + search_text.isLower() ? QWebEnginePage::FindFlags() : QWebEnginePage::FindCaseSensitively; + if (!forward) + flags |= QWebEnginePage::FindBackward; + + webview->page()->findText(search_text, flags, [](const QWebEngineFindTextResult &result) { + qDebug() << result.numberOfMatches() << result.activeMatch(); + }); +} + WebView *WebViewStack::get_webview(WebViewId webview_id) { auto webview_index = get_webview_index(webview_id); if (webview_index < 0) diff --git a/src/widgets/WebViewStack.hpp b/src/widgets/WebViewStack.hpp index 05362d6..e41af43 100644 --- a/src/widgets/WebViewStack.hpp +++ b/src/widgets/WebViewStack.hpp @@ -65,6 +65,7 @@ public slots: void webview_history_forward(WebViewId webview_id, qsizetype history_index); void close(WebViewId webview_id); void focus_webview(WebViewId webview_id); + void set_search_text(const QString &text, WebViewId webview_id, bool forward = true); protected slots: void on_new_webview_request(const QWebEngineNewWindowRequest &request); -- cgit v1.3.1