commit bca1b63d89e27b31b089ab48c63368640084b3a6
Author: Juergen Spitzmueller <[email protected]>
Date:   Mon Nov 1 14:21:34 2021 +0100

    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 1ea296b..4b02518 100644
--- a/src/frontends/qt/GuiSearch.cpp
+++ b/src/frontends/qt/GuiSearch.cpp
@@ -39,6 +39,7 @@
 #include <QPainter>
 #include <QLineEdit>
 #include <QSettings>
+#include <QHideEvent>
 #include <QShowEvent>
 #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 2c0cd3c..2fbc8c7 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_;
-- 
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to