summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeemu Katajisto <teemu.katajisto@digia.com>2012-11-30 12:56:48 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-12-01 10:31:20 +0100
commit179a480941ea91324e9e7c044cf74c4f9bd69b8d (patch)
treeab37985b7bb4c61aea2fdfff19d4d3c8d6d1a0c8
parent80ae1d2078d2fe137f8a88268c66440bf19bc1ba (diff)
Cocoa: create dialogs as NSPanels
NSPanels have builtin support to work with modal sessions. Task-number: QTBUG-28111 Change-Id: Ifeb6de03129e77aad744b3989931964c375cdbc7 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index c3b2139998..f786e6969f 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -149,8 +149,8 @@ static bool isMouseEvent(NSEvent *ev)
- (BOOL)canBecomeKeyWindow
{
- // Only tool windows should become key for popup types:
- if (m_cocoaPlatformWindow->window()->type() == Qt::Tool)
+ // Only tool or dialog windows should become key:
+ if (m_cocoaPlatformWindow->window()->type() == Qt::Tool || m_cocoaPlatformWindow->window()->type() == Qt::Dialog)
return YES;
return NO;
}
@@ -300,8 +300,8 @@ void QCocoaWindow::setVisible(bool visible)
[m_nsWindow orderFront: nil];
}
- // We want the events to properly reach the popup
- if (window()->type() == Qt::Popup)
+ // We want the events to properly reach the popup and dialog
+ if (window()->type() == Qt::Popup || window()->type() == Qt::Dialog)
[(NSPanel *)m_nsWindow setWorksWhenModal:YES];
}
} else {
@@ -666,14 +666,18 @@ NSWindow * QCocoaWindow::createNSWindow()
NSWindow *createdWindow = 0;
// Use NSPanel for popup-type windows. (Popup, Tool, ToolTip, SplashScreen)
- if ((type & Qt::Popup) == Qt::Popup) {
+ // and dialogs
+ if ((type & Qt::Popup) == Qt::Popup || (type & Qt::Dialog) == Qt::Dialog) {
QNSPanel *window;
window = [[QNSPanel alloc] initWithContentRect:frame
styleMask: styleMask
backing:NSBackingStoreBuffered
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];
+ if ((type & Qt::Popup) == Qt::Popup)
+ [window setHasShadow:YES];
+ else
+ setWindowShadow(flags);
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
if (QSysInfo::QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7) {