Skip to content

Commit 3ebf1bc

Browse files
author
kyngchaos
committed
Use Qt color picker to avoid Qt Cocoa crashes (#3497), part 1
git-svn-id: http://svn.osgeo.org/qgis/trunk@15376 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 364297f commit 3ebf1bc

File tree

3 files changed

+50
-0
lines changed

3 files changed

+50
-0
lines changed

src/app/qgssinglesymboldialog.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,12 @@ QgsSingleSymbolDialog::~QgsSingleSymbolDialog()
252252

253253
void QgsSingleSymbolDialog::selectOutlineColor()
254254
{
255+
#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
256+
// Native Mac dialog works only for Qt Carbon
257+
QColor c = QColorDialog::getColor( btnOutlineColor->color(), this, "", QColorDialog::DontUseNativeDialog );
258+
#else
255259
QColor c = QColorDialog::getColor( btnOutlineColor->color(), this );
260+
#endif
256261

257262
if ( c.isValid() )
258263
{
@@ -265,7 +270,12 @@ void QgsSingleSymbolDialog::selectOutlineColor()
265270

266271
void QgsSingleSymbolDialog::selectFillColor()
267272
{
273+
#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
274+
// Native Mac dialog works only for Qt Carbon
275+
QColor c = QColorDialog::getColor( btnFillColor->color(), this, "", QColorDialog::DontUseNativeDialog );
276+
#else
268277
QColor c = QColorDialog::getColor( btnFillColor->color(), this );
278+
#endif
269279

270280
if ( c.isValid() )
271281
{

src/gui/symbology-ng/qgssymbollayerv2widget.cpp

+35
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,12 @@ void QgsSimpleLineSymbolLayerV2Widget::penWidthChanged()
8484

8585
void QgsSimpleLineSymbolLayerV2Widget::colorChanged()
8686
{
87+
#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
88+
// Native Mac dialog works only for Qt Carbon
89+
QColor color = QColorDialog::getColor( mLayer->color(), this, "", QColorDialog::DontUseNativeDialog );
90+
#else
8791
QColor color = QColorDialog::getColor( mLayer->color(), this );
92+
#endif
8893
if ( !color.isValid() )
8994
return;
9095
mLayer->setColor( color );
@@ -226,7 +231,12 @@ void QgsSimpleMarkerSymbolLayerV2Widget::setName()
226231

227232
void QgsSimpleMarkerSymbolLayerV2Widget::setColorBorder()
228233
{
234+
#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
235+
// Native Mac dialog works only for Qt Carbon
236+
QColor borderColor = QColorDialog::getColor( mLayer->borderColor(), this, "", QColorDialog::DontUseNativeDialog );
237+
#else
229238
QColor borderColor = QColorDialog::getColor( mLayer->borderColor(), this );
239+
#endif
230240
if ( !borderColor.isValid() )
231241
return;
232242
mLayer->setBorderColor( borderColor );
@@ -236,7 +246,12 @@ void QgsSimpleMarkerSymbolLayerV2Widget::setColorBorder()
236246

237247
void QgsSimpleMarkerSymbolLayerV2Widget::setColorFill()
238248
{
249+
#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
250+
// Native Mac dialog works only for Qt Carbon
251+
QColor color = QColorDialog::getColor( mLayer->color(), this, "", QColorDialog::DontUseNativeDialog );
252+
#else
239253
QColor color = QColorDialog::getColor( mLayer->color(), this );
254+
#endif
240255
if ( !color.isValid() )
241256
return;
242257
mLayer->setColor( color );
@@ -310,7 +325,12 @@ QgsSymbolLayerV2* QgsSimpleFillSymbolLayerV2Widget::symbolLayer()
310325

311326
void QgsSimpleFillSymbolLayerV2Widget::setColor()
312327
{
328+
#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
329+
// Native Mac dialog works only for Qt Carbon
330+
QColor color = QColorDialog::getColor( mLayer->color(), this, "", QColorDialog::DontUseNativeDialog );
331+
#else
313332
QColor color = QColorDialog::getColor( mLayer->color(), this );
333+
#endif
314334
if ( !color.isValid() )
315335
return;
316336
mLayer->setColor( color );
@@ -320,7 +340,12 @@ void QgsSimpleFillSymbolLayerV2Widget::setColor()
320340

321341
void QgsSimpleFillSymbolLayerV2Widget::setBorderColor()
322342
{
343+
#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
344+
// Native Mac dialog works only for Qt Carbon
345+
QColor color = QColorDialog::getColor( mLayer->borderColor(), this, "", QColorDialog::DontUseNativeDialog );
346+
#else
323347
QColor color = QColorDialog::getColor( mLayer->borderColor(), this );
348+
#endif
324349
if ( !color.isValid() )
325350
return;
326351
mLayer->setBorderColor( color );
@@ -638,7 +663,12 @@ QgsSymbolLayerV2* QgsLineDecorationSymbolLayerV2Widget::symbolLayer()
638663

639664
void QgsLineDecorationSymbolLayerV2Widget::colorChanged()
640665
{
666+
#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
667+
// Native Mac dialog works only for Qt Carbon
668+
QColor color = QColorDialog::getColor( mLayer->color(), this, "", QColorDialog::DontUseNativeDialog );
669+
#else
641670
QColor color = QColorDialog::getColor( mLayer->color(), this );
671+
#endif
642672
if ( !color.isValid() )
643673
return;
644674
mLayer->setColor( color );
@@ -829,7 +859,12 @@ void QgsFontMarkerSymbolLayerV2Widget::setFontFamily( const QFont& font )
829859

830860
void QgsFontMarkerSymbolLayerV2Widget::setColor()
831861
{
862+
#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
863+
// Native Mac dialog works only for Qt Carbon
864+
QColor color = QColorDialog::getColor( mLayer->color(), this, "", QColorDialog::DontUseNativeDialog );
865+
#else
832866
QColor color = QColorDialog::getColor( mLayer->color(), this );
867+
#endif
833868
if ( !color.isValid() )
834869
return;
835870
mLayer->setColor( color );

src/gui/symbology-ng/qgssymbolv2selectordialog.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,12 @@ void QgsSymbolV2SelectorDialog::changeSymbolProperties()
174174

175175
void QgsSymbolV2SelectorDialog::setSymbolColor()
176176
{
177+
#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
178+
// Native Mac dialog works only for Qt Carbon
179+
QColor color = QColorDialog::getColor( mSymbol->color(), this, "", QColorDialog::DontUseNativeDialog );
180+
#else
177181
QColor color = QColorDialog::getColor( mSymbol->color(), this );
182+
#endif
178183
if ( !color.isValid() )
179184
return;
180185

0 commit comments

Comments
 (0)