diff --git a/python/PyQt6/core/auto_generated/scalebar/qgsdoubleboxscalebarrenderer.sip.in b/python/PyQt6/core/auto_generated/scalebar/qgsdoubleboxscalebarrenderer.sip.in index f19d66a7c39..a7cedd17f04 100644 --- a/python/PyQt6/core/auto_generated/scalebar/qgsdoubleboxscalebarrenderer.sip.in +++ b/python/PyQt6/core/auto_generated/scalebar/qgsdoubleboxscalebarrenderer.sip.in @@ -38,13 +38,6 @@ Double box with alternating colors. virtual bool applyDefaultSettings( QgsScaleBarSettings &settings ) const; -%Docstring -Applies any default settings relating to the scalebar to the passed ``settings`` object. - -Returns ``True`` if settings were applied. - -.. versionadded:: 3.42 -%End }; /************************************************************************ diff --git a/python/PyQt6/core/auto_generated/scalebar/qgssingleboxscalebarrenderer.sip.in b/python/PyQt6/core/auto_generated/scalebar/qgssingleboxscalebarrenderer.sip.in index 05216af6bc5..4a828b2e55e 100644 --- a/python/PyQt6/core/auto_generated/scalebar/qgssingleboxscalebarrenderer.sip.in +++ b/python/PyQt6/core/auto_generated/scalebar/qgssingleboxscalebarrenderer.sip.in @@ -39,13 +39,6 @@ color for the segments. virtual bool applyDefaultSettings( QgsScaleBarSettings &settings ) const; -%Docstring -Applies any default settings relating to the scalebar to the passed ``settings`` object. - -Returns ``True`` if settings were applied. - -.. versionadded:: 3.42 -%End }; /************************************************************************ diff --git a/python/core/auto_generated/scalebar/qgsdoubleboxscalebarrenderer.sip.in b/python/core/auto_generated/scalebar/qgsdoubleboxscalebarrenderer.sip.in index f19d66a7c39..a7cedd17f04 100644 --- a/python/core/auto_generated/scalebar/qgsdoubleboxscalebarrenderer.sip.in +++ b/python/core/auto_generated/scalebar/qgsdoubleboxscalebarrenderer.sip.in @@ -38,13 +38,6 @@ Double box with alternating colors. virtual bool applyDefaultSettings( QgsScaleBarSettings &settings ) const; -%Docstring -Applies any default settings relating to the scalebar to the passed ``settings`` object. - -Returns ``True`` if settings were applied. - -.. versionadded:: 3.42 -%End }; /************************************************************************ diff --git a/python/core/auto_generated/scalebar/qgssingleboxscalebarrenderer.sip.in b/python/core/auto_generated/scalebar/qgssingleboxscalebarrenderer.sip.in index 05216af6bc5..4a828b2e55e 100644 --- a/python/core/auto_generated/scalebar/qgssingleboxscalebarrenderer.sip.in +++ b/python/core/auto_generated/scalebar/qgssingleboxscalebarrenderer.sip.in @@ -39,13 +39,6 @@ color for the segments. virtual bool applyDefaultSettings( QgsScaleBarSettings &settings ) const; -%Docstring -Applies any default settings relating to the scalebar to the passed ``settings`` object. - -Returns ``True`` if settings were applied. - -.. versionadded:: 3.42 -%End }; /************************************************************************ diff --git a/src/core/scalebar/qgsdoubleboxscalebarrenderer.cpp b/src/core/scalebar/qgsdoubleboxscalebarrenderer.cpp index 9af05c3ce97..d6cdba55722 100644 --- a/src/core/scalebar/qgsdoubleboxscalebarrenderer.cpp +++ b/src/core/scalebar/qgsdoubleboxscalebarrenderer.cpp @@ -194,21 +194,26 @@ void QgsDoubleBoxScaleBarRenderer::draw( QgsRenderContext &context, const QgsSca bool QgsDoubleBoxScaleBarRenderer::applyDefaultSettings( QgsScaleBarSettings &settings ) const { - // restore the fill symbols by default - std::unique_ptr< QgsFillSymbol > fillSymbol = std::make_unique< QgsFillSymbol >(); - std::unique_ptr< QgsSimpleFillSymbolLayer > fillSymbolLayer = std::make_unique< QgsSimpleFillSymbolLayer >(); - fillSymbolLayer->setColor( QColor( 0, 0, 0 ) ); - fillSymbolLayer->setBrushStyle( Qt::SolidPattern ); - fillSymbolLayer->setStrokeStyle( Qt::SolidLine ); - fillSymbol->changeSymbolLayer( 0, fillSymbolLayer.release() ); - settings.setFillSymbol( fillSymbol.release() ); + QgsSimpleFillSymbolLayer *fill = qgis::down_cast< QgsSimpleFillSymbolLayer * >( settings.fillSymbol()->symbolLayers().at( 0 ) ); - fillSymbol = std::make_unique< QgsFillSymbol >(); - fillSymbolLayer = std::make_unique< QgsSimpleFillSymbolLayer >(); - fillSymbolLayer->setColor( QColor( 255, 255, 255 ) ); - fillSymbolLayer->setStrokeStyle( Qt::NoPen ); - fillSymbol->changeSymbolLayer( 0, fillSymbolLayer.release() ); - settings.setAlternateFillSymbol( fillSymbol.release() ); + // restore the fill symbols by default + if ( fill && fill->brushStyle() == Qt::NoBrush ) + { + std::unique_ptr< QgsFillSymbol > fillSymbol = std::make_unique< QgsFillSymbol >(); + std::unique_ptr< QgsSimpleFillSymbolLayer > fillSymbolLayer = std::make_unique< QgsSimpleFillSymbolLayer >(); + fillSymbolLayer->setColor( QColor( 0, 0, 0 ) ); + fillSymbolLayer->setBrushStyle( Qt::SolidPattern ); + fillSymbolLayer->setStrokeStyle( Qt::SolidLine ); + fillSymbol->changeSymbolLayer( 0, fillSymbolLayer.release() ); + settings.setFillSymbol( fillSymbol.release() ); + + fillSymbol = std::make_unique< QgsFillSymbol >(); + fillSymbolLayer = std::make_unique< QgsSimpleFillSymbolLayer >(); + fillSymbolLayer->setColor( QColor( 255, 255, 255 ) ); + fillSymbolLayer->setStrokeStyle( Qt::NoPen ); + fillSymbol->changeSymbolLayer( 0, fillSymbolLayer.release() ); + settings.setAlternateFillSymbol( fillSymbol.release() ); + } return true; } diff --git a/src/core/scalebar/qgsdoubleboxscalebarrenderer.h b/src/core/scalebar/qgsdoubleboxscalebarrenderer.h index 0521fd7f3f5..a3b9b8b844d 100644 --- a/src/core/scalebar/qgsdoubleboxscalebarrenderer.h +++ b/src/core/scalebar/qgsdoubleboxscalebarrenderer.h @@ -42,13 +42,6 @@ class CORE_EXPORT QgsDoubleBoxScaleBarRenderer: public QgsScaleBarRenderer const QgsScaleBarSettings &settings, const QgsScaleBarRenderer::ScaleBarContext &scaleContext ) const override; - /** - * Applies any default settings relating to the scalebar to the passed \a settings object. - * - * Returns TRUE if settings were applied. - * - * \since QGIS 3.42 - */ bool applyDefaultSettings( QgsScaleBarSettings &settings ) const override; }; diff --git a/src/core/scalebar/qgssingleboxscalebarrenderer.cpp b/src/core/scalebar/qgssingleboxscalebarrenderer.cpp index 402f487b5dc..e92e9714057 100644 --- a/src/core/scalebar/qgssingleboxscalebarrenderer.cpp +++ b/src/core/scalebar/qgssingleboxscalebarrenderer.cpp @@ -160,21 +160,26 @@ void QgsSingleBoxScaleBarRenderer::draw( QgsRenderContext &context, const QgsSca bool QgsSingleBoxScaleBarRenderer::applyDefaultSettings( QgsScaleBarSettings &settings ) const { - // restore the fill symbols by default - std::unique_ptr< QgsFillSymbol > fillSymbol = std::make_unique< QgsFillSymbol >(); - std::unique_ptr< QgsSimpleFillSymbolLayer > fillSymbolLayer = std::make_unique< QgsSimpleFillSymbolLayer >(); - fillSymbolLayer->setColor( QColor( 0, 0, 0 ) ); - fillSymbolLayer->setBrushStyle( Qt::SolidPattern ); - fillSymbolLayer->setStrokeStyle( Qt::SolidLine ); - fillSymbol->changeSymbolLayer( 0, fillSymbolLayer.release() ); - settings.setFillSymbol( fillSymbol.release() ); + QgsSimpleFillSymbolLayer *fill = qgis::down_cast< QgsSimpleFillSymbolLayer * >( settings.fillSymbol()->symbolLayers().at( 0 ) ); - fillSymbol = std::make_unique< QgsFillSymbol >(); - fillSymbolLayer = std::make_unique< QgsSimpleFillSymbolLayer >(); - fillSymbolLayer->setColor( QColor( 255, 255, 255 ) ); - fillSymbolLayer->setStrokeStyle( Qt::NoPen ); - fillSymbol->changeSymbolLayer( 0, fillSymbolLayer.release() ); - settings.setAlternateFillSymbol( fillSymbol.release() ); + // restore the fill symbols by default + if ( fill && fill->brushStyle() == Qt::NoBrush ) + { + std::unique_ptr< QgsFillSymbol > fillSymbol = std::make_unique< QgsFillSymbol >(); + std::unique_ptr< QgsSimpleFillSymbolLayer > fillSymbolLayer = std::make_unique< QgsSimpleFillSymbolLayer >(); + fillSymbolLayer->setColor( QColor( 0, 0, 0 ) ); + fillSymbolLayer->setBrushStyle( Qt::SolidPattern ); + fillSymbolLayer->setStrokeStyle( Qt::SolidLine ); + fillSymbol->changeSymbolLayer( 0, fillSymbolLayer.release() ); + settings.setFillSymbol( fillSymbol.release() ); + + fillSymbol = std::make_unique< QgsFillSymbol >(); + fillSymbolLayer = std::make_unique< QgsSimpleFillSymbolLayer >(); + fillSymbolLayer->setColor( QColor( 255, 255, 255 ) ); + fillSymbolLayer->setStrokeStyle( Qt::NoPen ); + fillSymbol->changeSymbolLayer( 0, fillSymbolLayer.release() ); + settings.setAlternateFillSymbol( fillSymbol.release() ); + } return true; } diff --git a/src/core/scalebar/qgssingleboxscalebarrenderer.h b/src/core/scalebar/qgssingleboxscalebarrenderer.h index 5072980dd38..ca99eb18e17 100644 --- a/src/core/scalebar/qgssingleboxscalebarrenderer.h +++ b/src/core/scalebar/qgssingleboxscalebarrenderer.h @@ -43,13 +43,6 @@ class CORE_EXPORT QgsSingleBoxScaleBarRenderer: public QgsScaleBarRenderer const QgsScaleBarSettings &settings, const QgsScaleBarRenderer::ScaleBarContext &scaleContext ) const override; - /** - * Applies any default settings relating to the scalebar to the passed \a settings object. - * - * Returns TRUE if settings were applied. - * - * \since QGIS 3.42 - */ bool applyDefaultSettings( QgsScaleBarSettings &settings ) const override; };