From bca1b63d89e27b31b089ab48c63368640084b3a6 Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Mon, 1 Nov 2021 14:21:34 +0100 Subject: [PATCH] Update toolbar and properly reset focus when find widget is closed (#12396) --- src/frontends/qt/GuiSearch.cpp | 18 +++++++++++++++--- src/frontends/qt/GuiSearch.h | 6 +++++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/frontends/qt/GuiSearch.cpp b/src/frontends/qt/GuiSearch.cpp index 1ea296b0e7..4b0251886c 100644 --- a/src/frontends/qt/GuiSearch.cpp +++ b/src/frontends/qt/GuiSearch.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include "QSizePolicy" #if QT_VERSION >= 0x050000 @@ -63,8 +64,8 @@ static void uniqueInsert(QComboBox * box, QString const & text) } -GuiSearchWidget::GuiSearchWidget(QWidget * parent) - : QWidget(parent) +GuiSearchWidget::GuiSearchWidget(QWidget * parent, GuiView & view) + : QWidget(parent), view_(view) { setupUi(this); @@ -149,6 +150,8 @@ void GuiSearchWidget::keyPressEvent(QKeyEvent * ev) } if (ev->key() == Qt::Key_Escape) { dispatch(FuncRequest(LFUN_DIALOG_HIDE, "findreplace")); + view_.setFocus(); + dispatch(FuncRequest(LFUN_BUFFER_UPDATE)); return; } @@ -414,6 +417,15 @@ void GuiSearchWidget::showEvent(QShowEvent * e) } +void GuiSearchWidget::hideEvent(QHideEvent * e) +{ + QWidget::hideEvent(e); + view_.setFocus(); + // update toolbar status + dispatch(FuncRequest(LFUN_BUFFER_UPDATE)); +} + + void GuiSearchWidget::findBufferChanged() { docstring search = theClipboard().getFindBuffer(); @@ -554,7 +566,7 @@ void GuiSearchWidget::restoreSession(QString const & session_key) GuiSearch::GuiSearch(GuiView & parent, Qt::DockWidgetArea area, Qt::WindowFlags flags) : DockView(parent, "findreplace", qt_("Search and Replace"), area, flags), - widget_(new GuiSearchWidget(this)) + widget_(new GuiSearchWidget(this, parent)) { setWidget(widget_); widget_->setBufferView(bufferview()); diff --git a/src/frontends/qt/GuiSearch.h b/src/frontends/qt/GuiSearch.h index 2c0cd3c498..2fbc8c7ac2 100644 --- a/src/frontends/qt/GuiSearch.h +++ b/src/frontends/qt/GuiSearch.h @@ -32,7 +32,7 @@ class GuiSearchWidget : public QWidget, public Ui::SearchUi Q_OBJECT public: - GuiSearchWidget(QWidget * parent); + GuiSearchWidget(QWidget * parent, GuiView & view); /// void saveSession(QSettings & settings, QString const & session_key) const; /// @@ -68,6 +68,8 @@ private: /// void showEvent(QShowEvent * e) override; /// + void hideEvent(QHideEvent * e) override; + /// void doFind(bool const backwards = false, bool const instant = false); /// @@ -85,6 +87,8 @@ private: /// BufferView const * bv_ = nullptr; /// + GuiView & view_; + /// bool minimized_ = false; /// contains the search box FancyLineEdit * findLE_; -- 2.39.5