diff options
-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.) |