Cocoa: Update geometry on window move.
authorMorten Johan Sorvig <morten.sorvig@nokia.com>
Wed, 14 Dec 2011 11:05:56 +0000 (12:05 +0100)
committerQt by Nokia <qt-info@nokia.com>
Thu, 15 Dec 2011 20:04:27 +0000 (21:04 +0100)
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>
src/plugins/platforms/cocoa/qcocoawindow.mm
src/plugins/platforms/cocoa/qnsview.h
src/plugins/platforms/cocoa/qnsview.mm

index 96dae74..d200ed4 100644 (file)
@@ -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];
 }
 
index 5714494..f3d5c9b 100644 (file)
@@ -61,6 +61,7 @@ class QCocoaWindow;
 
 - (void)setImage:(QImage *)image;
 - (void)drawRect:(NSRect)dirtyRect;
+- (void)updateGeometry;
 
 - (BOOL)isFlipped;
 - (BOOL)acceptsFirstResponder;
index 567e893..436069c 100644 (file)
@@ -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.)