diff options
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm b/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm index be2bab8ce7..8158c244ab 100644 --- a/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm +++ b/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm @@ -59,8 +59,8 @@ static NSButton *macCreateButton(const char *text, NSView *superview) NSButton *button = [[NSButton alloc] initWithFrame:buttonFrameRect]; [button setButtonType:NSMomentaryLightButton]; [button setBezelStyle:NSRoundedBezelStyle]; - [button setTitle:(NSString*)(CFStringRef)QCFString(QCoreApplication::translate("QDialogButtonBox", text) - .remove(QLatin1Char('&')))]; + [button setTitle:(NSString*)(CFStringRef)QCFString( + qt_mac_removeMnemonics(QCoreApplication::translate("QDialogButtonBox", text)))]; [[button cell] setFont:[NSFont systemFontOfSize: [NSFont systemFontSizeForControlSize:NSRegularControlSize]]]; [superview addSubview:button]; @@ -81,6 +81,7 @@ static NSButton *macCreateButton(const char *text, NSView *superview) NSInteger mResultCode; BOOL mDialogIsExecuting; BOOL mResultSet; + BOOL mClosingDueToKnownButton; }; - (void)restoreOriginalContentView; - (void)relayout; @@ -103,6 +104,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSColorPanelDelegate); mResultCode = NSCancelButton; mDialogIsExecuting = false; mResultSet = false; + mClosingDueToKnownButton = false; #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7) @@ -114,6 +116,11 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSColorPanelDelegate); name:NSColorPanelColorDidChangeNotification object:mColorPanel]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(windowWillClose:) + name:NSWindowWillCloseNotification + object:mColorPanel]; + [mColorPanel retain]; return self; } @@ -179,6 +186,15 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSColorPanelDelegate); emit mHelper->colorSelected(mQtColor); } +- (void)windowWillClose:(NSNotification *)notification +{ + Q_UNUSED(notification); + if (mCancelButton && mHelper && !mClosingDueToKnownButton) { + mClosingDueToKnownButton = true; // prevent repeating emit + emit mHelper->reject(); + } +} + - (void)restoreOriginalContentView { if (mStolenContentView) { @@ -246,6 +262,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSColorPanelDelegate); - (void)onOkClicked { + mClosingDueToKnownButton = true; [mColorPanel close]; [self updateQtColor]; [self finishOffWithCode:NSOKButton]; @@ -254,6 +271,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSColorPanelDelegate); - (void)onCancelClicked { if (mOkButton) { + mClosingDueToKnownButton = true; [mColorPanel close]; mQtColor = QColor(); [self finishOffWithCode:NSCancelButton]; @@ -298,6 +316,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSColorPanelDelegate); { mDialogIsExecuting = false; mResultSet = false; + mClosingDueToKnownButton = false; [mColorPanel makeKeyAndOrderFront:mColorPanel]; } |