From db44fdf4d65493706dc9a0aaf5e58729dc7867f9 Mon Sep 17 00:00:00 2001 From: Morten Sorvig Date: Wed, 26 Oct 2011 10:00:26 +0200 Subject: Cocoa: Implement propagateSizeHints. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Idc1244ffbf975972f01d9ee48092500a72739d37 Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/cocoa/qcocoahelpers.h | 2 ++ src/plugins/platforms/cocoa/qcocoahelpers.mm | 4 ++++ src/plugins/platforms/cocoa/qcocoawindow.h | 2 ++ src/plugins/platforms/cocoa/qcocoawindow.mm | 20 ++++++++++++++++++++ 4 files changed, 28 insertions(+) (limited to 'src/plugins') diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.h b/src/plugins/platforms/cocoa/qcocoahelpers.h index 78904bc7a7..3c1c0655f8 100644 --- a/src/plugins/platforms/cocoa/qcocoahelpers.h +++ b/src/plugins/platforms/cocoa/qcocoahelpers.h @@ -77,6 +77,8 @@ CGImageRef qt_mac_image_to_cgimage(const QImage &image); NSImage *qt_mac_cgimage_to_nsimage(CGImageRef iamge); NSImage *qt_mac_create_nsimage(const QPixmap &pm); +NSSize qt_mac_toNSSize(const QSize &qtSize); + QChar qt_mac_qtKey2CocoaKey(Qt::Key key); Qt::Key qt_mac_cocoaKey2QtKey(QChar keyCode); diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.mm b/src/plugins/platforms/cocoa/qcocoahelpers.mm index 7e82405ce3..113415f480 100644 --- a/src/plugins/platforms/cocoa/qcocoahelpers.mm +++ b/src/plugins/platforms/cocoa/qcocoahelpers.mm @@ -128,6 +128,10 @@ NSImage *qt_mac_create_nsimage(const QPixmap &pm) return qt_mac_cgimage_to_nsimage(qt_mac_image_to_cgimage(image)); } +NSSize qt_mac_toNSSize(const QSize &qtSize) +{ + return NSMakeSize(qtSize.width(), qtSize.height()); +} // Use this method to keep all the information in the TextSegment. As long as it is ordered // we are in OK shape, and we can influence that ourselves. diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h index dde64a1859..23aab63b75 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.h +++ b/src/plugins/platforms/cocoa/qcocoawindow.h @@ -64,6 +64,8 @@ public: void raise(); void lower(); + void propagateSizeHints(); + WId winId() const; NSView *contentView() const; diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index 840d4d96da..e587b05dec 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -140,6 +140,26 @@ void QCocoaWindow::lower() [m_nsWindow orderFront: m_nsWindow]; } +void QCocoaWindow::propagateSizeHints() +{ + [m_nsWindow setMinSize : qt_mac_toNSSize(window()->minimumSize())]; + [m_nsWindow setMaxSize : qt_mac_toNSSize(window()->maximumSize())]; + + if (!window()->sizeIncrement().isNull()) + [m_nsWindow setResizeIncrements : qt_mac_toNSSize(window()->sizeIncrement())]; + + // We must set the window frame after setting the minimum size to prevent the window + // from being resized to the minimum size. Use QWindow::baseSize if set, otherwise + // use the current size. + QSize baseSize = window()->baseSize(); + QRect rect = geometry(); + if (!baseSize.isNull()) { + [m_nsWindow setFrame : NSMakeRect(rect.x(), rect.y(), baseSize.width(), baseSize.height()) display : YES]; + } else { + [m_nsWindow setFrame : NSMakeRect(rect.x(), rect.y(), rect.width(), rect.height()) display : YES]; + } +} + WId QCocoaWindow::winId() const { return WId(m_nsWindow); -- cgit v1.2.3