From a8fb38f230da9a7afc3dbace6fa45c33dc58b4a6 Mon Sep 17 00:00:00 2001 From: Morten Johan Sorvig Date: Fri, 18 May 2012 07:53:40 +0200 Subject: Cocoa: Fix size hint and resize increment setting. Call the corresponding NSWindow size functions. Add special cases where Qt returns null or empty sizes. Change-Id: I880c50c04e92271dc342ad587191c8cb2c006dba Reviewed-by: Bradley T. Hughes --- src/plugins/platforms/cocoa/qcocoawindow.mm | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'src/plugins') diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index 95f35dd9c1..f29a9be553 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -266,18 +266,30 @@ void QCocoaWindow::propagateSizeHints() if (!m_nsWindow) return; - [m_nsWindow setMinSize : qt_mac_toNSSize(window()->minimumSize())]; - [m_nsWindow setMaxSize : qt_mac_toNSSize(window()->maximumSize())]; - #ifdef QT_COCOA_ENABLE_WINDOW_DEBUG qDebug() << "QCocoaWindow::propagateSizeHints" << this; qDebug() << " min/max " << window()->minimumSize() << window()->maximumSize(); + qDebug() << "size increment" << window()->sizeIncrement(); qDebug() << " basesize" << window()->baseSize(); qDebug() << " geometry" << geometry(); #endif - if (!window()->sizeIncrement().isNull()) + // Set the minimum content size. + const QSize minimumSize = window()->minimumSize(); + if (!minimumSize.isValid()) // minimumSize is (-1, -1) when not set. Make that (0, 0) for Cocoa. + [m_nsWindow setContentMinSize : NSMakeSize(0.0, 0.0)]; + [m_nsWindow setContentMinSize : NSMakeSize(minimumSize.width(), minimumSize.height())]; + + // Set the maximum content size. + const QSize maximumSize = window()->maximumSize(); + [m_nsWindow setContentMaxSize : NSMakeSize(maximumSize.width(), maximumSize.height())]; + + // sizeIncrement is observed to take values of (-1, -1) and (0, 0) for windows that should be + // resizable and that have no specific size increment set. Cocoa expects (1.0, 1.0) in this case. + if (!window()->sizeIncrement().isEmpty()) [m_nsWindow setResizeIncrements : qt_mac_toNSSize(window()->sizeIncrement())]; + else + [m_nsWindow setResizeIncrements : NSMakeSize(1.0, 1.0)]; QRect rect = geometry(); QSize baseSize = window()->baseSize(); -- cgit v1.2.3