diff options
Diffstat (limited to 'src/plugins/coreplugin')
-rw-r--r-- | src/plugins/coreplugin/icore.h | 2 | ||||
-rw-r--r-- | src/plugins/coreplugin/mainwindow.cpp | 13 | ||||
-rw-r--r-- | src/plugins/coreplugin/mainwindow.h | 2 |
3 files changed, 17 insertions, 0 deletions
diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h index b338839110..783f890599 100644 --- a/src/plugins/coreplugin/icore.h +++ b/src/plugins/coreplugin/icore.h @@ -164,6 +164,8 @@ signals: void coreAboutToClose(); void contextAboutToChange(const QList<Core::IContext *> &context); void contextChanged(const Core::Context &context); + void windowStateChanged(Qt::WindowStates previousStates, Qt::WindowStates currentStates); + void windowActivationChanged(bool isActive, bool hasPopup); public: /* internal use */ diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 94e5aa78fe..da53dd7528 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -201,6 +201,19 @@ MainWindow::MainWindow() this, &MainWindow::openDroppedFiles); } +// Edit View 3D needs to know when the main windows's state or activation change +void MainWindow::changeEvent(QEvent *event) +{ + if (event->type() == QEvent::WindowStateChange) { + emit m_coreImpl->windowStateChanged(m_previousWindowStates, windowState()); + m_previousWindowStates = windowState(); + } else if (event->type() == QEvent::ActivationChange) { + auto lastChild = qobject_cast<QWidget *>(children().last()); + bool hasPopup = lastChild && lastChild->isActiveWindow(); + emit m_coreImpl->windowActivationChanged(isActiveWindow(), hasPopup); + } +} + NavigationWidget *MainWindow::navigationWidget(Side side) const { return side == Side::Left ? m_leftNavigationWidget : m_rightNavigationWidget; diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h index 26dc607cbe..a3a537b231 100644 --- a/src/plugins/coreplugin/mainwindow.h +++ b/src/plugins/coreplugin/mainwindow.h @@ -114,6 +114,7 @@ public slots: protected: void closeEvent(QCloseEvent *event) override; + void changeEvent(QEvent *event) override; private: void openFile(); @@ -192,6 +193,7 @@ private: QToolButton *m_toggleRightSideBarButton = nullptr; QColor m_overrideColor; QList<std::function<bool()>> m_preCloseListeners; + Qt::WindowStates m_previousWindowStates = Qt::WindowNoState; }; } // namespace Internal |