diff options
author | Morten Johan Sorvig <morten.sorvig@nokia.com> | 2011-12-14 12:05:56 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-12-15 21:04:27 +0100 |
commit | 7b874b7fc4c56a039eaab7f8828379637fff8212 (patch) | |
tree | efa1b581eff756221203f3651249b0a719047702 /src/plugins | |
parent | 140579cb3ef676aa3a7c3fc322ddfcc6ec1b70f2 (diff) |
Cocoa: Update geometry on window move.
Call [QNSView updateGeometry] directly. We can't
got through the frameDidChange notification since
we are not actually changing the QNSView frame.
Rename frameDidChangeNotification -> updateGeometry
sine it now handles updates from two different sources.
Change-Id: I848e558294093cd51d97778734b5cf872435266a
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoawindow.mm | 7 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qnsview.h | 1 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qnsview.mm | 8 |
3 files changed, 9 insertions, 7 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index 96dae74cb8..d200ed4038 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -224,16 +224,13 @@ NSView *QCocoaWindow::contentView() const void QCocoaWindow::windowDidMove() { - NSRect rect = [[m_nsWindow contentView]frame]; - NSRect windowRect = [m_nsWindow frame]; - [[m_nsWindow contentView] setFrameSize:rect.size]; + [m_contentView updateGeometry]; } void QCocoaWindow::windowDidResize() { NSRect rect = [[m_nsWindow contentView]frame]; - NSRect windowRect = [m_nsWindow frame]; - // Call setFrameSize which will trigger a frameDidChangeNotificatio on QNSView. + // Call setFrameSize which will trigger a frameDidChangeNotification on QNSView. [[m_nsWindow contentView] setFrameSize:rect.size]; } diff --git a/src/plugins/platforms/cocoa/qnsview.h b/src/plugins/platforms/cocoa/qnsview.h index 571449492d..f3d5c9bb43 100644 --- a/src/plugins/platforms/cocoa/qnsview.h +++ b/src/plugins/platforms/cocoa/qnsview.h @@ -61,6 +61,7 @@ class QCocoaWindow; - (void)setImage:(QImage *)image; - (void)drawRect:(NSRect)dirtyRect; +- (void)updateGeometry; - (BOOL)isFlipped; - (BOOL)acceptsFirstResponder; diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index 567e893a55..436069c420 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -111,19 +111,23 @@ static QTouchDevice *touchDevice = 0; [self setPostsFrameChangedNotifications : YES]; [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(frameDidChangeNotification:) + selector:@selector(updateGeometry) name:NSViewFrameDidChangeNotification object:self]; return self; } -- (void) frameDidChangeNotification: (NSNotification *) notification +- (void)updateGeometry { NSRect rect = [self frame]; NSRect windowRect = [[self window] frame]; QRect geo(windowRect.origin.x, qt_mac_flipYCoordinate(windowRect.origin.y + rect.size.height), rect.size.width, rect.size.height); +#ifdef QT_COCOA_ENABLE_WINDOW_DEBUG + qDebug() << "QNSView::udpateGeometry" << geo; +#endif + // Call setGeometry on QPlatformWindow. (not on QCocoaWindow, // doing that will initiate a geometry change it and possibly create // an infinite loop when this notification is triggered again.) |