From d40815a568c4dce58360659c098f928789500d18 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sun, 6 May 2018 00:17:39 +0200 Subject: QTBUG-18665 workaround --- src/mainwindow/mainwindow.cpp | 12 +++++++++++- src/mainwindow/widgets/searchform.cpp | 17 ++++++----------- src/mainwindow/widgets/searchform.h | 5 ++--- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/mainwindow/mainwindow.cpp b/src/mainwindow/mainwindow.cpp index f83c2a7..eba02c6 100644 --- a/src/mainwindow/mainwindow.cpp +++ b/src/mainwindow/mainwindow.cpp @@ -84,7 +84,17 @@ MainWindow::MainWindow(std::shared_ptr &config, QWidget *parent) auto *searchShortcut = new QShortcut(QKeySequence(config->value("mainwindow.shortcuts.search").value().c_str()), this); connect(searchShortcut, &QShortcut::activated, this, [=]() { - searchBox->setVisible(!searchBox->isVisible()); + /* QTBUG-18665 + * When focusing out of the search box and hiding it, the first + * (or earlier?) subwindow gets activated for some reason. + */ + if(searchBox->isVisible()) { + auto *w = mdiArea->currentSubWindow(); + searchBox->hide(); + mdiArea->setActiveSubWindow(w); + } else { + searchBox->show(); + } }); } diff --git a/src/mainwindow/widgets/searchform.cpp b/src/mainwindow/widgets/searchform.cpp index b400079..c6038ff 100644 --- a/src/mainwindow/widgets/searchform.cpp +++ b/src/mainwindow/widgets/searchform.cpp @@ -8,7 +8,8 @@ #include "searchform.h" #include "ui_searchform.h" -#include +#include +#include #include SearchForm::SearchForm(QWidget *parent) @@ -42,24 +43,18 @@ void SearchForm::setView(QWebEngineView *view) this->view = view; } -void SearchForm::showEvent(QShowEvent *e) +void SearchForm::showEvent(QShowEvent *event) { - e->accept(); ui->lineEdit->setFocus(); ui->lineEdit->selectAll(); + event->accept(); } -void SearchForm::hideEvent(QHideEvent *e) +void SearchForm::hideEvent(QHideEvent *event) { - e->accept(); // clear highlighted text when hiding if(view) { view->findText(""); } -} - -void SearchForm::focusInEvent(QFocusEvent *e) -{ - ui->lineEdit->setFocus(); - e->accept(); + event->accept(); } diff --git a/src/mainwindow/widgets/searchform.h b/src/mainwindow/widgets/searchform.h index 59c4ef5..2219711 100644 --- a/src/mainwindow/widgets/searchform.h +++ b/src/mainwindow/widgets/searchform.h @@ -29,9 +29,8 @@ public slots: void setView(QWebEngineView *view); protected: - void showEvent(QShowEvent *e) override; - void hideEvent(QHideEvent *e) override; - void focusInEvent(QFocusEvent *e) override; + void showEvent(QShowEvent *event) override; + void hideEvent(QHideEvent *event) override; private: Ui::SearchForm *ui; -- cgit v1.2.1