summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2019-09-24 11:35:46 +0200
committerEike Ziller <eike.ziller@qt.io>2019-09-27 08:21:13 +0000
commit2d95c905926f49a660778e6ea45f779343da3fe5 (patch)
tree08d2f328dfa140a9489147f84e1f3e896249e795
parent9be1caf05f0a32483efc0c29095b820e97473471 (diff)
downloadqt-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>
-rw-r--r--src/plugins/coreplugin/windowsupport.cpp4
-rw-r--r--src/plugins/coreplugin/windowsupport.h1
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;
};