From a784d6bc3d69586a2b66c740098ec4dc858232e6 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Sun, 11 Oct 2015 22:54:13 +1100 Subject: [PATCH] If svg files with params do not have a default value set, then don't reset the fill/border color and border width when changing svg marker/svg fill SVG files This change makes the behaviour consistent between the svg marker symbol and the other marker symbols. Additionally, svg files which have customisable colors and NO default values set will be shaded in gray fill/black outline in the svg selector widget, to follow the same behaviour as the other marker symbol selectors. Note that this change has NO EFFECT unless the svg files are modified to remove the default param value, so there will be no change for users' custom symbols. A follow up commit will need to remove the default param values from the preinstalled SVG files though. If you want to test in the meantime, I've modified just the first two symbols in the accomodation group to make this change for testing. (refs #10908) --- .../accommodation/accommodation_alpinehut.svg | 8 ++-- .../accommodation_bed_and_breakfast.svg | 14 +++---- python/core/symbology-ng/qgssvgcache.sip | 19 ++++++++++ .../symbology-ng/qgsfillsymbollayerv2.cpp | 23 ++++++----- .../symbology-ng/qgsmarkersymbollayerv2.cpp | 26 ++++++++----- src/core/symbology-ng/qgssvgcache.cpp | 38 ++++++++++++++++--- src/core/symbology-ng/qgssvgcache.h | 25 +++++++++++- src/gui/symbology-ng/qgssvgselectorwidget.cpp | 13 ++++++- .../symbology-ng/qgssymbollayerv2widget.cpp | 33 ++++++++++++---- 9 files changed, 152 insertions(+), 47 deletions(-) diff --git a/images/svg/accommodation/accommodation_alpinehut.svg b/images/svg/accommodation/accommodation_alpinehut.svg index 356cd02e722..33c55d92c23 100644 --- a/images/svg/accommodation/accommodation_alpinehut.svg +++ b/images/svg/accommodation/accommodation_alpinehut.svg @@ -26,7 +26,7 @@ - - - - - - - - - - - diff --git a/python/core/symbology-ng/qgssvgcache.sip b/python/core/symbology-ng/qgssvgcache.sip index 4ecc8f8fc62..ae9d6c532ec 100644 --- a/python/core/symbology-ng/qgssvgcache.sip +++ b/python/core/symbology-ng/qgssvgcache.sip @@ -88,6 +88,25 @@ class QgsSvgCache : QObject void containsParams( const QString& path, bool& hasFillParam, QColor& defaultFillColor, bool& hasOutlineParam, QColor& defaultOutlineColor, bool& hasOutlineWidthParam, double& defaultOutlineWidth ) const; + /** Tests if an svg file contains parameters for fill, outline color, outline width. If yes, possible default values are returned. If there are several + * default values in the svg file, only the first one is considered. + * @param path path to SVG file + * @param hasFillParam will be true if fill param present in SVG + * @param hasDefaultFillParam will be true if fill param has a default value specified + * @param defaultFillColor will be set to default fill color specified in SVG, if present + * @param hasOutlineParam will be true if outline param present in SVG + * @param hasDefaultOutlineColor will be true if outline param has a default value specified + * @param defaultOutlineColor will be set to default outline color specified in SVG, if present + * @param hasOutlineWidthParam will be true if outline width param present in SVG + * @param hasDefaultOutlineWidth will be true if outline width param has a default value specified + * @param defaultOutlineWidth will be set to default outline width specified in SVG, if present + * @note available in python bindings as containsParamsV2 + * @note added in QGIS 2.12 + */ + void containsParams( const QString& path, bool& hasFillParam, bool& hasDefaultFillParam, QColor& defaultFillColor, + bool& hasOutlineParam, bool& hasDefaultOutlineColor, QColor& defaultOutlineColor, + bool& hasOutlineWidthParam, bool& hasDefaultOutlineWidth, double& defaultOutlineWidth ) const /PyName=containsParamsV2/; + /** Get image data*/ QByteArray getImageData( const QString &path ) const; diff --git a/src/core/symbology-ng/qgsfillsymbollayerv2.cpp b/src/core/symbology-ng/qgsfillsymbollayerv2.cpp index 2cbb85210c6..cc9b7045cc6 100644 --- a/src/core/symbology-ng/qgsfillsymbollayerv2.cpp +++ b/src/core/symbology-ng/qgsfillsymbollayerv2.cpp @@ -1712,6 +1712,9 @@ QgsSVGFillSymbolLayer::QgsSVGFillSymbolLayer( const QString& svgFilePath, double setSvgFilePath( svgFilePath ); mOutlineWidth = 0.3; mAngle = angle; + mSvgFillColor = QColor( 0, 0, 0 ); + mSvgOutlineColor = QColor( 0, 0, 0 ); + mSvgOutlineWidth = 0.3; setDefaultSvgParams(); mSvgPattern = 0; } @@ -1725,6 +1728,9 @@ QgsSVGFillSymbolLayer::QgsSVGFillSymbolLayer( const QByteArray& svgData, double storeViewBox(); mOutlineWidth = 0.3; mAngle = angle; + mSvgFillColor = QColor( 0, 0, 0 ); + mSvgOutlineColor = QColor( 0, 0, 0 ); + mSvgOutlineWidth = 0.3; setSubSymbol( new QgsLineSymbolV2() ); setDefaultSvgParams(); mSvgPattern = 0; @@ -2224,31 +2230,28 @@ void QgsSVGFillSymbolLayer::storeViewBox() void QgsSVGFillSymbolLayer::setDefaultSvgParams() { - //default values - mSvgFillColor = QColor( 0, 0, 0 ); - mSvgOutlineColor = QColor( 0, 0, 0 ); - mSvgOutlineWidth = 0.3; - if ( mSvgFilePath.isEmpty() ) { return; } bool hasFillParam, hasOutlineParam, hasOutlineWidthParam; + bool hasDefaultFillColor, hasDefaultOutlineColor, hasDefaultOutlineWidth; QColor defaultFillColor, defaultOutlineColor; double defaultOutlineWidth; - QgsSvgCache::instance()->containsParams( mSvgFilePath, hasFillParam, defaultFillColor, hasOutlineParam, defaultOutlineColor, hasOutlineWidthParam, - defaultOutlineWidth ); + QgsSvgCache::instance()->containsParams( mSvgFilePath, hasFillParam, hasDefaultFillColor, defaultFillColor, + hasOutlineParam, hasDefaultOutlineColor, defaultOutlineColor, + hasOutlineWidthParam, hasDefaultOutlineWidth, defaultOutlineWidth ); - if ( hasFillParam ) + if ( hasDefaultFillColor ) { mSvgFillColor = defaultFillColor; } - if ( hasOutlineParam ) + if ( hasDefaultOutlineColor ) { mSvgOutlineColor = defaultOutlineColor; } - if ( hasOutlineWidthParam ) + if ( hasDefaultOutlineWidth ) { mSvgOutlineWidth = defaultOutlineWidth; } diff --git a/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp b/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp index a746ec9df81..9a920446b60 100644 --- a/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp +++ b/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp @@ -1070,17 +1070,20 @@ QgsSymbolLayerV2* QgsSvgMarkerSymbolLayerV2::create( const QgsStringMap& props ) { QColor fillColor, outlineColor; double outlineWidth; - bool hasFillParam, hasOutlineParam, hasOutlineWidthParam; - QgsSvgCache::instance()->containsParams( name, hasFillParam, fillColor, hasOutlineParam, outlineColor, hasOutlineWidthParam, outlineWidth ); - if ( hasFillParam ) + bool hasFillParam = false, hasOutlineParam = false, hasOutlineWidthParam = false; + bool hasDefaultFillColor = false, hasDefaultOutlineColor = false, hasDefaultOutlineWidth = false; + QgsSvgCache::instance()->containsParams( name, hasFillParam, hasDefaultFillColor, fillColor, + hasOutlineParam, hasDefaultOutlineColor, outlineColor, + hasOutlineWidthParam, hasDefaultOutlineWidth, outlineWidth ); + if ( hasDefaultFillColor ) { m->setFillColor( fillColor ); } - if ( hasOutlineParam ) + if ( hasDefaultOutlineColor ) { m->setOutlineColor( outlineColor ); } - if ( hasOutlineWidthParam ) + if ( hasDefaultOutlineWidth ) { m->setOutlineWidth( outlineWidth ); } @@ -1163,17 +1166,20 @@ void QgsSvgMarkerSymbolLayerV2::setPath( const QString& path ) mPath = path; QColor fillColor, outlineColor; double outlineWidth; - bool hasFillParam, hasOutlineParam, hasOutlineWidthParam; - QgsSvgCache::instance()->containsParams( path, hasFillParam, fillColor, hasOutlineParam, outlineColor, hasOutlineWidthParam, outlineWidth ); - if ( hasFillParam ) + bool hasFillParam = false, hasOutlineParam = false, hasOutlineWidthParam = false; + bool hasDefaultFillColor = false, hasDefaultOutlineColor = false, hasDefaultOutlineWidth = false; + QgsSvgCache::instance()->containsParams( path, hasFillParam, hasDefaultFillColor, fillColor, + hasOutlineParam, hasDefaultOutlineColor, outlineColor, + hasOutlineWidthParam, hasDefaultOutlineWidth, outlineWidth ); + if ( hasDefaultFillColor ) { setFillColor( fillColor ); } - if ( hasOutlineParam ) + if ( hasDefaultOutlineColor ) { setOutlineColor( outlineColor ); } - if ( hasOutlineWidthParam ) + if ( hasDefaultOutlineWidth ) { setOutlineWidth( outlineWidth ); } diff --git a/src/core/symbology-ng/qgssvgcache.cpp b/src/core/symbology-ng/qgssvgcache.cpp index a5e16122b9b..449d28594cc 100644 --- a/src/core/symbology-ng/qgssvgcache.cpp +++ b/src/core/symbology-ng/qgssvgcache.cpp @@ -226,14 +226,32 @@ QgsSvgCacheEntry* QgsSvgCache::insertSVG( const QString& file, double size, cons void QgsSvgCache::containsParams( const QString& path, bool& hasFillParam, QColor& defaultFillColor, bool& hasOutlineParam, QColor& defaultOutlineColor, bool& hasOutlineWidthParam, double& defaultOutlineWidth ) const +{ + bool hasDefaultFillColor = false; + bool hasDefaultOutlineColor = false; + bool hasDefaultOutlineWidth = false; + + containsParams( path, hasFillParam, hasDefaultFillColor, defaultFillColor, + hasOutlineParam, hasDefaultOutlineColor, defaultOutlineColor, + hasOutlineWidthParam, hasDefaultOutlineWidth, defaultOutlineWidth ); +} + +void QgsSvgCache::containsParams( const QString& path, + bool& hasFillParam, bool& hasDefaultFillParam, QColor& defaultFillColor, + bool& hasOutlineParam, bool& hasDefaultOutlineColor, QColor& defaultOutlineColor, + bool& hasOutlineWidthParam, bool& hasDefaultOutlineWidth, double& defaultOutlineWidth ) const { hasFillParam = false; hasOutlineParam = false; hasOutlineWidthParam = false; - defaultFillColor = QColor( Qt::black ); + defaultFillColor = QColor( Qt::white ); defaultOutlineColor = QColor( Qt::black ); defaultOutlineWidth = 0.2; + hasDefaultFillParam = false; + hasDefaultOutlineColor = false; + hasDefaultOutlineWidth = false; + QDomDocument svgDoc; if ( !svgDoc.setContent( getImageData( path ) ) ) { @@ -241,7 +259,9 @@ void QgsSvgCache::containsParams( const QString& path, bool& hasFillParam, QColo } QDomElement docElem = svgDoc.documentElement(); - containsElemParams( docElem, hasFillParam, defaultFillColor, hasOutlineParam, defaultOutlineColor, hasOutlineWidthParam, defaultOutlineWidth ); + containsElemParams( docElem, hasFillParam, hasDefaultFillParam, defaultFillColor, + hasOutlineParam, hasDefaultOutlineColor, defaultOutlineColor, + hasOutlineWidthParam, hasDefaultOutlineWidth, defaultOutlineWidth ); } void QgsSvgCache::replaceParamsAndCacheSvg( QgsSvgCacheEntry* entry ) @@ -632,8 +652,8 @@ void QgsSvgCache::replaceElemParams( QDomElement& elem, const QColor& fill, cons } } -void QgsSvgCache::containsElemParams( const QDomElement& elem, bool& hasFillParam, QColor& defaultFill, bool& hasOutlineParam, QColor& defaultOutline, - bool& hasOutlineWidthParam, double& defaultOutlineWidth ) const +void QgsSvgCache::containsElemParams( const QDomElement& elem, bool& hasFillParam, bool& hasDefaultFill, QColor& defaultFill, bool& hasOutlineParam, bool& hasDefaultOutline, QColor& defaultOutline, + bool& hasOutlineWidthParam, bool& hasDefaultOutlineWidth, double& defaultOutlineWidth ) const { if ( elem.isNull() ) { @@ -675,6 +695,7 @@ void QgsSvgCache::containsElemParams( const QDomElement& elem, bool& hasFillPara if ( valueSplit.size() > 1 ) { defaultFill = QColor( valueSplit.at( 1 ) ); + hasDefaultFill = true; } } else if ( !hasOutlineParam && value.startsWith( "param(outline)" ) ) @@ -683,6 +704,7 @@ void QgsSvgCache::containsElemParams( const QDomElement& elem, bool& hasFillPara if ( valueSplit.size() > 1 ) { defaultOutline = QColor( valueSplit.at( 1 ) ); + hasDefaultOutline = true; } } else if ( !hasOutlineWidthParam && value.startsWith( "param(outline-width)" ) ) @@ -691,6 +713,7 @@ void QgsSvgCache::containsElemParams( const QDomElement& elem, bool& hasFillPara if ( valueSplit.size() > 1 ) { defaultOutlineWidth = valueSplit.at( 1 ).toDouble(); + hasDefaultOutlineWidth = true; } } } @@ -705,6 +728,7 @@ void QgsSvgCache::containsElemParams( const QDomElement& elem, bool& hasFillPara if ( valueSplit.size() > 1 ) { defaultFill = QColor( valueSplit.at( 1 ) ); + hasDefaultFill = true; } } else if ( !hasOutlineParam && value.startsWith( "param(outline)" ) ) @@ -713,6 +737,7 @@ void QgsSvgCache::containsElemParams( const QDomElement& elem, bool& hasFillPara if ( valueSplit.size() > 1 ) { defaultOutline = QColor( valueSplit.at( 1 ) ); + hasDefaultOutline = true; } } else if ( !hasOutlineWidthParam && value.startsWith( "param(outline-width)" ) ) @@ -721,6 +746,7 @@ void QgsSvgCache::containsElemParams( const QDomElement& elem, bool& hasFillPara if ( valueSplit.size() > 1 ) { defaultOutlineWidth = valueSplit.at( 1 ).toDouble(); + hasDefaultOutlineWidth = true; } } } @@ -732,7 +758,9 @@ void QgsSvgCache::containsElemParams( const QDomElement& elem, bool& hasFillPara for ( int i = 0; i < nChildren; ++i ) { QDomElement childElem = childList.at( i ).toElement(); - containsElemParams( childElem, hasFillParam, defaultFill, hasOutlineParam, defaultOutline, hasOutlineWidthParam, defaultOutlineWidth ); + containsElemParams( childElem, hasFillParam, hasDefaultFill, defaultFill, + hasOutlineParam, hasDefaultOutline, defaultOutline, + hasOutlineWidthParam, hasDefaultOutlineWidth, defaultOutlineWidth ); } } diff --git a/src/core/symbology-ng/qgssvgcache.h b/src/core/symbology-ng/qgssvgcache.h index d1e7811d408..fb7ea46a446 100644 --- a/src/core/symbology-ng/qgssvgcache.h +++ b/src/core/symbology-ng/qgssvgcache.h @@ -114,6 +114,25 @@ class CORE_EXPORT QgsSvgCache : public QObject void containsParams( const QString& path, bool& hasFillParam, QColor& defaultFillColor, bool& hasOutlineParam, QColor& defaultOutlineColor, bool& hasOutlineWidthParam, double& defaultOutlineWidth ) const; + /** Tests if an svg file contains parameters for fill, outline color, outline width. If yes, possible default values are returned. If there are several + * default values in the svg file, only the first one is considered. + * @param path path to SVG file + * @param hasFillParam will be true if fill param present in SVG + * @param hasDefaultFillParam will be true if fill param has a default value specified + * @param defaultFillColor will be set to default fill color specified in SVG, if present + * @param hasOutlineParam will be true if outline param present in SVG + * @param hasDefaultOutlineColor will be true if outline param has a default value specified + * @param defaultOutlineColor will be set to default outline color specified in SVG, if present + * @param hasOutlineWidthParam will be true if outline width param present in SVG + * @param hasDefaultOutlineWidth will be true if outline width param has a default value specified + * @param defaultOutlineWidth will be set to default outline width specified in SVG, if present + * @note available in python bindings as containsParamsV2 + * @note added in QGIS 2.12 + */ + void containsParams( const QString& path, bool& hasFillParam, bool& hasDefaultFillParam, QColor& defaultFillColor, + bool& hasOutlineParam, bool& hasDefaultOutlineColor, QColor& defaultOutlineColor, + bool& hasOutlineWidthParam, bool& hasDefaultOutlineWidth, double& defaultOutlineWidth ) const; + /** Get image data*/ QByteArray getImageData( const QString &path ) const; @@ -175,8 +194,10 @@ class CORE_EXPORT QgsSvgCache : public QObject /** Replaces parameters in elements of a dom node and calls method for all child nodes*/ void replaceElemParams( QDomElement& elem, const QColor& fill, const QColor& outline, double outlineWidth ); - void containsElemParams( const QDomElement& elem, bool& hasFillParam, QColor& defaultFill, bool& hasOutlineParam, QColor& defaultOutline, - bool& hasOutlineWidthParam, double& defaultOutlineWidth ) const; + void containsElemParams( const QDomElement& elem, + bool& hasFillParam, bool& hasDefaultFill, QColor& defaultFill, + bool& hasOutlineParam, bool& hasDefaultOutline, QColor& defaultOutline, + bool& hasOutlineWidthParam, bool& hasDefaultOutlineWidth, double& defaultOutlineWidth ) const; /** Calculates scaling for rendered image sizes to SVG logical sizes*/ double calcSizeScaleFactor( QgsSvgCacheEntry* entry, const QDomElement& docElem ) const; diff --git a/src/gui/symbology-ng/qgssvgselectorwidget.cpp b/src/gui/symbology-ng/qgssvgselectorwidget.cpp index 0705bad4ab0..7b8460bb04a 100644 --- a/src/gui/symbology-ng/qgssvgselectorwidget.cpp +++ b/src/gui/symbology-ng/qgssvgselectorwidget.cpp @@ -67,7 +67,18 @@ QVariant QgsSvgSelectorListModel::data( const QModelIndex & index, int role ) co QColor fill, outline; double outlineWidth; bool fillParam, outlineParam, outlineWidthParam; - QgsSvgCache::instance()->containsParams( entry, fillParam, fill, outlineParam, outline, outlineWidthParam, outlineWidth ); + bool hasDefaultFillColor = false, hasDefaultOutlineColor = false, hasDefaultOutlineWidth = false; + QgsSvgCache::instance()->containsParams( entry, fillParam, hasDefaultFillColor, fill, + outlineParam, hasDefaultOutlineColor, outline, + outlineWidthParam, hasDefaultOutlineWidth, outlineWidth ); + + //if defaults not set in symbol, use these values + if ( !hasDefaultFillColor ) + fill = QColor( 200, 200, 200 ); + if ( !hasDefaultOutlineColor ) + outline = Qt::black; + if ( !hasDefaultOutlineWidth ) + outlineWidth = 0.2; bool fitsInCache; // should always fit in cache at these sizes (i.e. under 559 px ^ 2, or half cache size) const QImage& img = QgsSvgCache::instance()->svgAsImage( entry, 30.0, fill, outline, outlineWidth, 3.5 /*appr. 88 dpi*/, 1.0, fitsInCache ); diff --git a/src/gui/symbology-ng/qgssymbollayerv2widget.cpp b/src/gui/symbology-ng/qgssymbollayerv2widget.cpp index 0ff563ab996..ea27d0bf84b 100644 --- a/src/gui/symbology-ng/qgssymbollayerv2widget.cpp +++ b/src/gui/symbology-ng/qgssymbollayerv2widget.cpp @@ -1603,7 +1603,18 @@ class QgsSvgListModel : public QAbstractListModel QColor fill, outline; double outlineWidth; bool fillParam, outlineParam, outlineWidthParam; - QgsSvgCache::instance()->containsParams( entry, fillParam, fill, outlineParam, outline, outlineWidthParam, outlineWidth ); + bool hasDefaultFillColor = false, hasDefaultOutlineColor = false, hasDefaultOutlineWidth = false; + QgsSvgCache::instance()->containsParams( entry, fillParam, hasDefaultFillColor, fill, + outlineParam, hasDefaultOutlineColor, outline, + outlineWidthParam, hasDefaultOutlineWidth, outlineWidth ); + + //if defaults not set in symbol, use these values + if ( !hasDefaultFillColor ) + fill = QColor( 200, 200, 200 ); + if ( !hasDefaultOutlineColor ) + outline = Qt::black; + if ( !hasDefaultOutlineWidth ) + outlineWidth = 0.6; bool fitsInCache; // should always fit in cache at these sizes (i.e. under 559 px ^ 2, or half cache size) const QImage& img = QgsSvgCache::instance()->svgAsImage( entry, 30.0, fill, outline, outlineWidth, 3.5 /*appr. 88 dpi*/, 1.0, fitsInCache ); @@ -1716,7 +1727,10 @@ void QgsSvgMarkerSymbolLayerV2Widget::setGuiForSvg( const QgsSvgMarkerSymbolLaye bool hasFillParam, hasOutlineParam, hasOutlineWidthParam; QColor defaultFill, defaultOutline; double defaultOutlineWidth; - QgsSvgCache::instance()->containsParams( layer->path(), hasFillParam, defaultFill, hasOutlineParam, defaultOutline, hasOutlineWidthParam, defaultOutlineWidth ); + bool hasDefaultFillColor, hasDefaultOutlineColor, hasDefaultOutlineWidth; + QgsSvgCache::instance()->containsParams( layer->path(), hasFillParam, hasDefaultFillColor, defaultFill, + hasOutlineParam, hasDefaultOutlineColor, defaultOutline, + hasOutlineWidthParam, hasDefaultOutlineWidth, defaultOutlineWidth ); mChangeColorButton->setEnabled( hasFillParam ); mChangeBorderColorButton->setEnabled( hasOutlineParam ); mBorderWidthSpinBox->setEnabled( hasOutlineWidthParam ); @@ -1727,7 +1741,7 @@ void QgsSvgMarkerSymbolLayerV2Widget::setGuiForSvg( const QgsSvgMarkerSymbolLaye { mChangeColorButton->setColor( layer->fillColor() ); } - else + else if ( hasDefaultFillColor ) { mChangeColorButton->setColor( defaultFill ); } @@ -1738,7 +1752,7 @@ void QgsSvgMarkerSymbolLayerV2Widget::setGuiForSvg( const QgsSvgMarkerSymbolLaye { mChangeBorderColorButton->setColor( layer->outlineColor() ); } - else + else if ( hasDefaultOutlineColor ) { mChangeBorderColorButton->setColor( defaultOutline ); } @@ -2195,18 +2209,21 @@ void QgsSVGFillSymbolLayerWidget::updateParamGui( bool resetValues ) bool hasFillParam, hasOutlineParam, hasOutlineWidthParam; QColor defaultFill, defaultOutline; double defaultOutlineWidth; - QgsSvgCache::instance()->containsParams( mSVGLineEdit->text(), hasFillParam, defaultFill, hasOutlineParam, defaultOutline, hasOutlineWidthParam, defaultOutlineWidth ); - if ( hasFillParam && resetValues ) + bool hasDefaultFillColor, hasDefaultOutlineColor, hasDefaultOutlineWidth; + QgsSvgCache::instance()->containsParams( mSVGLineEdit->text(), hasFillParam, hasDefaultFillColor, defaultFill, + hasOutlineParam, hasDefaultOutlineColor, defaultOutline, + hasOutlineWidthParam, hasDefaultOutlineWidth, defaultOutlineWidth ); + if ( hasDefaultFillColor && resetValues ) { mChangeColorButton->setColor( defaultFill ); } mChangeColorButton->setEnabled( hasFillParam ); - if ( hasOutlineParam && resetValues ) + if ( hasDefaultOutlineColor && resetValues ) { mChangeBorderColorButton->setColor( defaultOutline ); } mChangeBorderColorButton->setEnabled( hasOutlineParam ); - if ( hasOutlineWidthParam && resetValues ) + if ( hasDefaultOutlineWidth && resetValues ) { mBorderWidthSpinBox->setValue( defaultOutlineWidth ); }