Cocoa: Send window activation events.
authorMorten Johan Sorvig <morten.sorvig@nokia.com>
Thu, 12 Jan 2012 11:32:59 +0000 (12:32 +0100)
committerQt by Nokia <qt-info@nokia.com>
Fri, 13 Jan 2012 06:47:47 +0000 (07:47 +0100)
Change-Id: I599b4316f1535bf4855b205bfb2117bbcee63bf0
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
src/plugins/platforms/cocoa/qcocoawindow.mm
src/plugins/platforms/cocoa/qnsview.h
src/plugins/platforms/cocoa/qnsview.mm

index b65d371..b4b4bc6 100644 (file)
@@ -100,6 +100,16 @@ QCocoaWindow::QCocoaWindow(QWindow *tlw)
 
     m_contentView = [[QNSView alloc] initWithQWindow:tlw platformWindow:this];
 
+    [[NSNotificationCenter defaultCenter] addObserver:m_contentView
+                                          selector:@selector(windowDidBecomeKey)
+                                          name:NSWindowDidBecomeKeyNotification
+                                          object:m_nsWindow];
+
+    [[NSNotificationCenter defaultCenter] addObserver:m_contentView
+                                          selector:@selector(windowDidResignKey)
+                                          name:NSWindowDidResignKeyNotification
+                                          object:m_nsWindow];
+
     // ### Accept touch events by default.
     // Beware that enabling touch events has a negative impact on the overall performance.
     // We probably need a QWindowSystemInterface API to enable/disable touch events.
index b778c7c..73c8030 100644 (file)
@@ -62,6 +62,8 @@ class QCocoaWindow;
 - (void)setImage:(QImage *)image;
 - (void)drawRect:(NSRect)dirtyRect;
 - (void)updateGeometry;
+- (void)windowDidBecomeKey;
+- (void)windowDidResignKey;
 
 - (BOOL)isFlipped;
 - (BOOL)acceptsFirstResponder;
index c853e72..26ddd44 100644 (file)
@@ -138,6 +138,16 @@ static QTouchDevice *touchDevice = 0;
         QWindowSystemInterface::handleSynchronousGeometryChange(m_window, geo);
 }
 
+- (void)windowDidBecomeKey
+{
+    QWindowSystemInterface::handleWindowActivated(m_window);
+}
+
+- (void)windowDidResignKey
+{
+    QWindowSystemInterface::handleWindowActivated(0);
+}
+
 - (void) setImage:(QImage *)image
 {
     CGImageRelease(m_cgImage);