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>
This commit is contained in:
Eike Ziller
2019-09-24 11:35:46 +02:00
parent 9be1caf05f
commit 2d95c90592
2 changed files with 4 additions and 1 deletions

View File

@@ -40,6 +40,7 @@
#include <QEvent> #include <QEvent>
#include <QMenu> #include <QMenu>
#include <QWidget> #include <QWidget>
#include <QWindowStateChangeEvent>
namespace Core { namespace Core {
namespace Internal { namespace Internal {
@@ -111,6 +112,7 @@ bool WindowSupport::eventFilter(QObject *obj, QEvent *event)
m_minimizeAction->setEnabled(!minimized); m_minimizeAction->setEnabled(!minimized);
m_zoomAction->setEnabled(!minimized); m_zoomAction->setEnabled(!minimized);
} }
m_previousWindowState = static_cast<QWindowStateChangeEvent *>(event)->oldState();
updateFullScreenAction(); updateFullScreenAction();
} else if (event->type() == QEvent::WindowActivate) { } else if (event->type() == QEvent::WindowActivate) {
m_windowList->setActiveWindow(m_window); m_windowList->setActiveWindow(m_window);
@@ -126,7 +128,7 @@ bool WindowSupport::eventFilter(QObject *obj, QEvent *event)
void WindowSupport::toggleFullScreen() void WindowSupport::toggleFullScreen()
{ {
if (m_window->isFullScreen()) { if (m_window->isFullScreen()) {
m_window->setWindowState(m_window->windowState() & ~Qt::WindowFullScreen); m_window->setWindowState(m_previousWindowState & ~Qt::WindowFullScreen);
} else { } else {
m_window->setWindowState(m_window->windowState() | Qt::WindowFullScreen); m_window->setWindowState(m_window->windowState() | Qt::WindowFullScreen);
} }

View File

@@ -80,6 +80,7 @@ private:
QAction *m_zoomAction; QAction *m_zoomAction;
QAction *m_closeAction; QAction *m_closeAction;
QAction *m_toggleFullScreenAction; QAction *m_toggleFullScreenAction;
Qt::WindowStates m_previousWindowState;
bool m_shutdown = false; bool m_shutdown = false;
}; };