]> git.lyx.org Git - lyx.git/commitdiff
Update toolbar and properly reset focus when find widget is closed (#12396)
authorJuergen Spitzmueller <spitz@lyx.org>
Mon, 1 Nov 2021 13:21:34 +0000 (14:21 +0100)
committerJuergen Spitzmueller <spitz@lyx.org>
Mon, 1 Nov 2021 13:21:34 +0000 (14:21 +0100)
src/frontends/qt/GuiSearch.cpp
src/frontends/qt/GuiSearch.h

index 1ea296b0e7b038443db80e96d53e803c0b627f70..4b0251886cd65af1eb78bfdc6aba057c0b9cb7e8 100644 (file)
@@ -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());
index 2c0cd3c498fd80836f5ed1ebc55ef7da20d6f424..2fbc8c7ac24c957d31e1975bf7b3c6a3095b8ce6 100644 (file)
@@ -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_;