diff options
| -rw-r--r-- | src/dolphindockwidget.cpp | 17 | ||||
| -rw-r--r-- | src/dolphindockwidget.h | 6 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/dolphindockwidget.cpp b/src/dolphindockwidget.cpp index 930c38e35..5e79e0316 100644 --- a/src/dolphindockwidget.cpp +++ b/src/dolphindockwidget.cpp @@ -6,6 +6,7 @@ #include "dolphindockwidget.h" +#include <QEvent> #include <QStyle> namespace @@ -77,5 +78,21 @@ bool DolphinDockWidget::isLocked() const return m_locked; } +bool DolphinDockWidget::event(QEvent *event) +{ + switch (event->type()) { + case QEvent::Show: + case QEvent::Hide: + if (event->spontaneous()) { + // The Dolphin window has been minimized or restored. We do not want this to be interpreted like a user was toggling the visibility of this widget. + // We return here so no QDockWidget::visibilityChanged() signal is emitted. This does not seem to happen either way on Wayland. + return true; + } + [[fallthrough]]; + default: + return QDockWidget::event(event); + } +} + #include "dolphindockwidget.moc" #include "moc_dolphindockwidget.cpp" diff --git a/src/dolphindockwidget.h b/src/dolphindockwidget.h index 114a11b55..127525b5a 100644 --- a/src/dolphindockwidget.h +++ b/src/dolphindockwidget.h @@ -27,6 +27,12 @@ public: void setLocked(bool lock); bool isLocked() const; +protected: + /** + * Make sure we do not emit QDockWidget::visibilityChanged() signals whenever Dolphin's window is minimized or restored. + */ + bool event(QEvent *event) override; + private: bool m_locked; QWidget *m_dockTitleBar; |
