diff options
author | Eike Ziller <eike.ziller@qt.io> | 2019-09-24 11:35:46 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2019-09-27 08:21:13 +0000 |
commit | 2d95c905926f49a660778e6ea45f779343da3fe5 (patch) | |
tree | 08d2f328dfa140a9489147f84e1f3e896249e795 /src/plugins/coreplugin | |
parent | 9be1caf05f0a32483efc0c29095b820e97473471 (diff) | |
download | qt-creator-2d95c905926f49a660778e6ea45f779343da3fe5.tar.gz |
macOS: Fix window state after going out of fullscreen
If you went out of fullscreen with the shortcut or menu item, it would
not restore a previous maximized state, but instead resized the window
to the smaller non-maximized state. So,
1. open Qt Creator and resize to some non-maximized size
2. double-click window title to maximize
3. Window > Enter Full Screen
4. Window > Exit Full Screen
now returns correctly to state 2, not 1.
Change-Id: I076321070d011d73bfe888c0a4a5ade24c1057d6
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/coreplugin')
-rw-r--r-- | src/plugins/coreplugin/windowsupport.cpp | 4 | ||||
-rw-r--r-- | src/plugins/coreplugin/windowsupport.h | 1 |
2 files changed, 4 insertions, 1 deletions
diff --git a/src/plugins/coreplugin/windowsupport.cpp b/src/plugins/coreplugin/windowsupport.cpp index 17bab61bcc..26117ba12f 100644 --- a/src/plugins/coreplugin/windowsupport.cpp +++ b/src/plugins/coreplugin/windowsupport.cpp @@ -40,6 +40,7 @@ #include <QEvent> #include <QMenu> #include <QWidget> +#include <QWindowStateChangeEvent> namespace Core { namespace Internal { @@ -111,6 +112,7 @@ bool WindowSupport::eventFilter(QObject *obj, QEvent *event) m_minimizeAction->setEnabled(!minimized); m_zoomAction->setEnabled(!minimized); } + m_previousWindowState = static_cast<QWindowStateChangeEvent *>(event)->oldState(); updateFullScreenAction(); } else if (event->type() == QEvent::WindowActivate) { m_windowList->setActiveWindow(m_window); @@ -126,7 +128,7 @@ bool WindowSupport::eventFilter(QObject *obj, QEvent *event) void WindowSupport::toggleFullScreen() { if (m_window->isFullScreen()) { - m_window->setWindowState(m_window->windowState() & ~Qt::WindowFullScreen); + m_window->setWindowState(m_previousWindowState & ~Qt::WindowFullScreen); } else { m_window->setWindowState(m_window->windowState() | Qt::WindowFullScreen); } diff --git a/src/plugins/coreplugin/windowsupport.h b/src/plugins/coreplugin/windowsupport.h index 5531306fe0..1e640f6edb 100644 --- a/src/plugins/coreplugin/windowsupport.h +++ b/src/plugins/coreplugin/windowsupport.h @@ -80,6 +80,7 @@ private: QAction *m_zoomAction; QAction *m_closeAction; QAction *m_toggleFullScreenAction; + Qt::WindowStates m_previousWindowState; bool m_shutdown = false; }; |