diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-04-19 17:56:03 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-04-19 17:56:03 +0530 |
| commit | 0e95e99e72237058465959d55b77750a9d7c1bef (patch) | |
| tree | 5b99cd64f7c49b949a6381c4654ec253822934b5 /src/widgets | |
| parent | 7a458b424c2c1a6ed251211b25261acffef59b7f (diff) | |
| download | null-browser-0e95e99e72237058465959d55b77750a9d7c1bef.tar.gz null-browser-0e95e99e72237058465959d55b77750a9d7c1bef.zip | |
Add web.search and search text implemnetation
Diffstat (limited to '')
| -rw-r--r-- | src/widgets/WebView.hpp | 1 | ||||
| -rw-r--r-- | src/widgets/WebViewStack.cpp | 20 | ||||
| -rw-r--r-- | src/widgets/WebViewStack.hpp | 1 |
3 files changed, 22 insertions, 0 deletions
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 <QWebEngineView> #include <QtCore> #include <cstdint> +#include <qtypes.h> #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 <QStackedLayout> +#include <QWebEngineFindTextResult> #include <QWebEngineHistory> #include <QWebEngineNewWindowRequest> #include <QWebEngineProfile> @@ -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); |
