Cocoa: Panels can become key windows too.
authorMorten Johan Sorvig <morten.sorvig@nokia.com>
Tue, 20 Mar 2012 07:32:55 +0000 (08:32 +0100)
committerQt by Nokia <qt-info@nokia.com>
Tue, 20 Mar 2012 13:11:06 +0000 (14:11 +0100)
The cocoa plugin uses NSPanel instead of NSWindow
for popup-type windows. With the exception of tooltips
and splash screens these windows should take input
focus as well.

Change-Id: Icdf0854e7c511ccc106e035dae4763ae90c23aa5
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
src/plugins/platforms/cocoa/qcocoawindow.mm

index d432740..a76830f 100644 (file)
 
 - (BOOL)canBecomeKeyWindow
 {
-    return NO;
+    // Most panels can be come the key window. Exceptions are:
+    if (m_cocoaPlatformWindow->window()->windowType() == Qt::ToolTip)
+        return NO;
+    if (m_cocoaPlatformWindow->window()->windowType() == Qt::SplashScreen)
+        return NO;
+    return YES;
 }
 
 @end
@@ -357,6 +362,7 @@ NSWindow * QCocoaWindow::createNSWindow()
                                          defer:NO]; // Deferring window creation breaks OpenGL (the GL context is set up
                                                     // before the window is shown and needs a proper window.).
         [window setHasShadow:YES];
+        window->m_cocoaPlatformWindow = this;
         createdWindow = window;
     } else {
         styleMask = (NSResizableWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSTitledWindowMask);