From 0843ee2dada57255c29425f7b598ab3b258e4641 Mon Sep 17 00:00:00 2001 From: Mike Skec Date: Tue, 9 Feb 2021 17:49:07 +1100 Subject: Search box: better reimplementation This was necessary to fix a bug, where the URL bar becomes unusable while search box is visible. --- src/browsertab.cpp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'src/browsertab.cpp') diff --git a/src/browsertab.cpp b/src/browsertab.cpp index 2af2bb0..8cc30a8 100644 --- a/src/browsertab.cpp +++ b/src/browsertab.cpp @@ -22,6 +22,7 @@ #include "ioutil.hpp" #include "kristall.hpp" #include "widgets/favouritepopup.hpp" +#include "widgets/searchbox.hpp" #include #include @@ -106,16 +107,8 @@ BrowserTab::BrowserTab(MainWindow *mainWindow) : QWidget(nullptr), connect(sc, &QShortcut::activated, this, &BrowserTab::on_refresh_button_clicked); } { - QShortcut * sc0 = new QShortcut(QKeySequence("Return"), this), - *sc1 = new QShortcut(QKeySequence("F3"), this); - connect(sc0, &QShortcut::activated, this, &BrowserTab::on_search_next_clicked); - connect(sc1, &QShortcut::activated, this, &BrowserTab::on_search_next_clicked); - } - { - QShortcut * sc0 = new QShortcut(QKeySequence("Shift+Return"), this), - *sc1 = new QShortcut(QKeySequence("Shift+F3"), this); - connect(sc0, &QShortcut::activated, this, &BrowserTab::on_search_previous_clicked); - connect(sc1, &QShortcut::activated, this, &BrowserTab::on_search_previous_clicked); + connect(this->ui->search_box, &SearchBox::searchNext, this, &BrowserTab::on_search_next_clicked); + connect(this->ui->search_box, &SearchBox::searchPrev, this, &BrowserTab::on_search_previous_clicked); } { QShortcut * sc = new QShortcut(QKeySequence("Escape"), this->ui->search_bar); @@ -1635,12 +1628,22 @@ void BrowserTab::on_search_box_returnPressed() void BrowserTab::on_search_next_clicked() { - this->ui->text_browser->find(this->ui->search_box->text()); + if (!this->ui->text_browser->find(this->ui->search_box->text())) + { + // Wrap search + this->ui->text_browser->moveCursor(QTextCursor::Start); + this->ui->text_browser->find(this->ui->search_box->text()); + } } void BrowserTab::on_search_previous_clicked() { - this->ui->text_browser->find(this->ui->search_box->text(), QTextDocument::FindBackward); + if (!this->ui->text_browser->find(this->ui->search_box->text(), QTextDocument::FindBackward)) + { + // Wrap search + this->ui->text_browser->moveCursor(QTextCursor::End); + this->ui->text_browser->find(this->ui->search_box->text(), QTextDocument::FindBackward); + } } void BrowserTab::on_close_search_clicked() -- cgit v1.2.3