summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qcocoawindow.mm
diff options
context:
space:
mode:
authorChristoph Schleifenbaum <christoph.schleifenbaum@kdab.com>2015-03-14 15:51:53 +0100
committerTimur Pocheptsov <Timur.Pocheptsov@digia.com>2015-04-01 15:17:32 +0000
commit2432a821aa272e567ae20e04ef8588112c4400dc (patch)
tree3b6f64edab944a0ae41a3aa18def2d111f2d96c0 /src/plugins/platforms/cocoa/qcocoawindow.mm
parent9f349432459c4a0dfaee3777df9c7fce6ea1c121 (diff)
Cocoa: Fix minimizing/zooming frameless windows.
Use miniaturize instead of performMiniaturize when the window has no minimize button (even if frameless). Make sure the window is resizable before performing zoom. Even restore this, of course. Change-Id: I43217153b4d4fcec0ded4afcde3009817e01feba Task-number: QTBUG-32184 QTBUG-45339 Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com> Reviewed-by: Christoph Schleifenbaum <christoph.schleifenbaum@kdab.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoawindow.mm')
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index 0a7c6b573a..ec289aba99 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -1488,10 +1488,23 @@ void QCocoaWindow::syncWindowState(Qt::WindowState newState)
}
Qt::WindowState predictedState = newState;
+ if ((m_synchedWindowState & Qt::WindowMaximized) != (newState & Qt::WindowMaximized)) {
+ const int styleMask = [m_nsWindow styleMask];
+ const bool usePerform = styleMask & NSResizableWindowMask;
+ [m_nsWindow setStyleMask:styleMask | NSResizableWindowMask];
+ if (usePerform)
+ [m_nsWindow performZoom : m_nsWindow]; // toggles
+ else
+ [m_nsWindow zoom : m_nsWindow]; // toggles
+ [m_nsWindow setStyleMask:styleMask];
+ }
if ((m_synchedWindowState & Qt::WindowMinimized) != (newState & Qt::WindowMinimized)) {
if (newState & Qt::WindowMinimized) {
- [m_nsWindow performMiniaturize : m_nsWindow];
+ if ([m_nsWindow styleMask] & NSMiniaturizableWindowMask)
+ [m_nsWindow performMiniaturize : m_nsWindow];
+ else
+ [m_nsWindow miniaturize : m_nsWindow];
} else {
[m_nsWindow deminiaturize : m_nsWindow];
}