summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa
diff options
context:
space:
mode:
authorMorten Johan Sorvig <morten.sorvig@nokia.com>2011-12-14 12:05:56 +0100
committerQt by Nokia <qt-info@nokia.com>2011-12-15 21:04:27 +0100
commit7b874b7fc4c56a039eaab7f8828379637fff8212 (patch)
treeefa1b581eff756221203f3651249b0a719047702 /src/plugins/platforms/cocoa
parent140579cb3ef676aa3a7c3fc322ddfcc6ec1b70f2 (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/platforms/cocoa')
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm7
-rw-r--r--src/plugins/platforms/cocoa/qnsview.h1
-rw-r--r--src/plugins/platforms/cocoa/qnsview.mm8
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.)