Cocoa: Proper handling of mDelegate
authorChristoph Schleifenbaum <christoph.schleifenbaum@kdab.com>
Tue, 10 Apr 2012 15:15:44 +0000 (17:15 +0200)
committerQt by Nokia <qt-info@nokia.com>
Thu, 12 Apr 2012 02:15:10 +0000 (04:15 +0200)
mDelegate keeps the pointer to a QNSFontPanelDelegate, which reacts
on the NSFontPanel used by this dialog helper. It has to be created
before it can be used. On a read-only access, this has been fixed to
return a default-constructed value (like QFont()). For writing access
(like setting the font) the delegate was already created.

The same applies to mDelegate to QNSColorPanelDelegate respective.

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

index fd4d660..405cace 100644 (file)
@@ -395,6 +395,8 @@ void QCocoaColorDialogHelper::hide_sys()
 
 QCocoaColorDialogHelper::DialogCode QCocoaColorDialogHelper::dialogResultCode_sys()
 {
+    if (!mDelegate)
+        return QPlatformDialogHelper::Rejected;
     QT_MANGLE_NAMESPACE(QNSColorPanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSColorPanelDelegate) *>(mDelegate);
     return [delegate dialogResultCode];
 }
@@ -429,6 +431,8 @@ void QCocoaColorDialogHelper::setCurrentColor_sys(const QColor &color)
 
 QColor QCocoaColorDialogHelper::currentColor_sys() const
 {
+    if (!mDelegate)
+        return QColor();
     return reinterpret_cast<QT_MANGLE_NAMESPACE(QNSColorPanelDelegate) *>(mDelegate)->mQtColor;
 }
 
index d05a015..1e89270 100644 (file)
@@ -414,6 +414,8 @@ void QCocoaFontDialogHelper::hide_sys()
 
 QCocoaFontDialogHelper::DialogCode QCocoaFontDialogHelper::dialogResultCode_sys()
 {
+    if (!mDelegate)
+        return QPlatformDialogHelper::Rejected;
     QT_MANGLE_NAMESPACE(QNSFontPanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSFontPanelDelegate) *>(mDelegate);
     return [delegate dialogResultCode];
 }
@@ -448,6 +450,8 @@ void QCocoaFontDialogHelper::setCurrentFont_sys(const QFont &font)
 
 QFont QCocoaFontDialogHelper::currentFont_sys() const
 {
+    if (!mDelegate)
+        return QFont();
     return reinterpret_cast<QT_MANGLE_NAMESPACE(QNSFontPanelDelegate) *>(mDelegate)->mQtFont;
 }