Skip to content

Commit 27fbdd6

Browse files
committed
Address review
1 parent 1a2fdd0 commit 27fbdd6

File tree

9 files changed

+63
-9
lines changed

9 files changed

+63
-9
lines changed

python/PyQt6/core/auto_generated/symbology/qgssymbol.sip.in

+7-1
Original file line numberDiff line numberDiff line change
@@ -870,7 +870,7 @@ Internally, this notifies all symbol layers which were used via a call to
870870
%Docstring
871871
Returns the symbol's extent buffer.
872872

873-
:return: The symbol's extent buffer
873+
Units are retrieved via :py:func:`~QgsSymbol.extentBufferSizeUnit`.
874874

875875
.. versionadded:: 3.42
876876
%End
@@ -879,6 +879,8 @@ Returns the symbol's extent buffer.
879879
%Docstring
880880
Sets the symbol's extent buffer.
881881

882+
Units are set via :py:func:`~QgsSymbol.setExtentBufferSizeUnit`.
883+
882884
:param extentBuffer: buffer distance.
883885

884886
.. seealso:: :py:func:`extentBuffer`
@@ -894,13 +896,17 @@ Sets the symbol's extent buffer.
894896
%Docstring
895897
Returns the units for the buffer size.
896898

899+
.. seealso:: :py:func:`extentBuffer`
900+
897901
.. seealso:: :py:func:`setExtentBufferSizeUnit`
898902
%End
899903

900904
void setExtentBufferSizeUnit( Qgis::RenderUnit unit );
901905
%Docstring
902906
Sets the ``unit`` used for the extent buffer.
903907

908+
.. seealso:: :py:func:`setExtentBuffer`
909+
904910
.. seealso:: :py:func:`extentBufferSizeUnit`
905911
%End
906912

python/core/auto_generated/symbology/qgssymbol.sip.in

+7-1
Original file line numberDiff line numberDiff line change
@@ -870,7 +870,7 @@ Internally, this notifies all symbol layers which were used via a call to
870870
%Docstring
871871
Returns the symbol's extent buffer.
872872

873-
:return: The symbol's extent buffer
873+
Units are retrieved via :py:func:`~QgsSymbol.extentBufferSizeUnit`.
874874

875875
.. versionadded:: 3.42
876876
%End
@@ -879,6 +879,8 @@ Returns the symbol's extent buffer.
879879
%Docstring
880880
Sets the symbol's extent buffer.
881881

882+
Units are set via :py:func:`~QgsSymbol.setExtentBufferSizeUnit`.
883+
882884
:param extentBuffer: buffer distance.
883885

884886
.. seealso:: :py:func:`extentBuffer`
@@ -894,13 +896,17 @@ Sets the symbol's extent buffer.
894896
%Docstring
895897
Returns the units for the buffer size.
896898

899+
.. seealso:: :py:func:`extentBuffer`
900+
897901
.. seealso:: :py:func:`setExtentBufferSizeUnit`
898902
%End
899903

900904
void setExtentBufferSizeUnit( Qgis::RenderUnit unit );
901905
%Docstring
902906
Sets the ``unit`` used for the extent buffer.
903907

908+
.. seealso:: :py:func:`setExtentBuffer`
909+
904910
.. seealso:: :py:func:`extentBufferSizeUnit`
905911
%End
906912

src/core/symbology/qgsrenderer.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ double QgsFeatureRenderer::maximumExtentBuffer( QgsRenderContext &context ) cons
425425
if ( symbolList.empty() )
426426
return 0;
427427

428-
const QgsExpressionContext &expContext = context.expressionContext();
428+
QgsExpressionContext &expContext = context.expressionContext();
429429

430430
auto getValueFromSymbol = [ &expContext, &context ]( const QgsSymbol * sym ) -> double
431431
{
@@ -435,7 +435,11 @@ double QgsFeatureRenderer::maximumExtentBuffer( QgsRenderContext &context ) cons
435435

436436
if ( property.isActive() )
437437
{
438+
expContext.setOriginalValueVariable( sym->extentBuffer() );
439+
438440
value = sym->dataDefinedProperties().valueAsDouble( QgsSymbol::Property::ExtentBuffer, expContext, sym->extentBuffer() );
441+
if ( value < 0 )
442+
value = 0;
439443
}
440444
else
441445
{

src/core/symbology/qgssymbol.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -2254,7 +2254,7 @@ void QgsSymbol::initPropertyDefinitions()
22542254
sPropertyDefinitions = QgsPropertiesDefinition
22552255
{
22562256
{ static_cast< int >( QgsSymbol::Property::Opacity ), QgsPropertyDefinition( "alpha", QObject::tr( "Opacity" ), QgsPropertyDefinition::Opacity, origin )},
2257-
{ static_cast< int >( QgsSymbol::Property::ExtentBuffer ), QgsPropertyDefinition( "extent_buffer", QObject::tr( "Extent buffer" ), QgsPropertyDefinition::Double, origin )},
2257+
{ static_cast< int >( QgsSymbol::Property::ExtentBuffer ), QgsPropertyDefinition( "extent_buffer", QObject::tr( "Extent buffer" ), QgsPropertyDefinition::DoublePositive, origin )},
22582258
};
22592259
}
22602260

src/core/symbology/qgssymbol.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -871,14 +871,15 @@ class CORE_EXPORT QgsSymbol
871871
/**
872872
* Returns the symbol's extent buffer.
873873
*
874-
* \returns The symbol's extent buffer
874+
* Units are retrieved via extentBufferSizeUnit().
875875
* \since QGIS 3.42
876876
*/
877877
double extentBuffer() const;
878878

879879
/**
880880
* Sets the symbol's extent buffer.
881881
*
882+
* Units are set via setExtentBufferSizeUnit().
882883
* \param extentBuffer buffer distance.
883884
* \see extentBuffer()
884885
* \note Negative values are not supported and will be changed to 0.
@@ -889,13 +890,15 @@ class CORE_EXPORT QgsSymbol
889890
/**
890891
* Returns the units for the buffer size.
891892
*
893+
* \see extentBuffer()
892894
* \see setExtentBufferSizeUnit()
893895
*/
894896
Qgis::RenderUnit extentBufferSizeUnit() const { return mExtentBufferSizeUnit; }
895897

896898
/**
897899
* Sets the \a unit used for the extent buffer.
898900
*
901+
* \see setExtentBuffer()
899902
* \see extentBufferSizeUnit()
900903
*/
901904
void setExtentBufferSizeUnit( Qgis::RenderUnit unit ) { mExtentBufferSizeUnit = unit; }

src/core/vector/qgsvectorlayerrenderer.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
#include "qgsmessagelog.h"
1919
#include "qgspallabeling.h"
20-
#include "qgsrectangle.h"
2120
#include "qgsrenderer.h"
2221
#include "qgsrendercontext.h"
2322
#include "qgssinglesymbolrenderer.h"

src/gui/symbology/qgsextentbufferdialog.cpp

+31-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,11 @@
1717
#include "moc_qgsextentbufferdialog.cpp"
1818
#include "qdialogbuttonbox.h"
1919
#include "qgsexpressioncontext.h"
20+
#include "qgsexpressioncontextutils.h"
2021
#include "qgshelp.h"
22+
#include "qgsmapcanvas.h"
2123
#include "qgspanelwidget.h"
24+
#include "qgsproject.h"
2225
#include "qgssymbol.h"
2326
#include "qgssymbolwidgetcontext.h"
2427
#include "qgsunittypes.h"
@@ -78,8 +81,28 @@ void QgsExtentBufferWidget::registerDataDefinedButton( QgsPropertyOverrideButton
7881

7982
QgsExpressionContext QgsExtentBufferWidget::createExpressionContext() const
8083
{
81-
QList<QgsExpressionContextScope *> scopes = mContext.globalProjectAtlasMapLayerScopes( mLayer );
82-
QgsExpressionContext expContext( scopes );
84+
if ( QgsExpressionContext *lExpressionContext = mContext.expressionContext() )
85+
return *lExpressionContext;
86+
87+
QgsExpressionContext expContext;
88+
89+
if ( mContext.mapCanvas() )
90+
{
91+
expContext = mContext.mapCanvas()->createExpressionContext();
92+
}
93+
else
94+
{
95+
expContext << QgsExpressionContextUtils::globalScope()
96+
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
97+
<< QgsExpressionContextUtils::atlasScope( nullptr )
98+
<< QgsExpressionContextUtils::mapSettingsScope( QgsMapSettings() );
99+
}
100+
101+
if ( mLayer )
102+
expContext << QgsExpressionContextUtils::layerScope( mLayer );
103+
104+
expContext.setOriginalValueVariable( mExtentBufferSpinBox->value() );
105+
expContext.setHighlightedVariables( QStringList() << QgsExpressionContext::EXPR_ORIGINAL_VALUE );
83106

84107
return expContext;
85108
}
@@ -149,6 +172,12 @@ QgsExtentBufferWidget *QgsExtentBufferDialog::widget() const
149172
return mWidget;
150173
}
151174

175+
void QgsExtentBufferDialog::setContext( const QgsSymbolWidgetContext &context )
176+
{
177+
mWidget->setContext( context );
178+
}
179+
180+
152181
void QgsExtentBufferDialog::showHelp()
153182
{
154183
QgsHelp::openHelp( QStringLiteral( "working_with_vector/vector_properties.html#extent-buffer" ) );

src/gui/symbology/qgsextentbufferdialog.h

+7
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,13 @@ class GUI_EXPORT QgsExtentBufferDialog : public QDialog
134134
*/
135135
QgsExtentBufferWidget *widget() const;
136136

137+
/**
138+
* Sets the context in which widget is shown, e.g., the associated map canvas and expression contexts.
139+
* \param context symbol widget context
140+
* \see context()
141+
*/
142+
void setContext( const QgsSymbolWidgetContext &context );
143+
137144
private:
138145
QgsExtentBufferWidget *mWidget;
139146

src/gui/symbology/qgssymbolslistwidget.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ void QgsSymbolsListWidget::showExtentBufferSettings()
331331

332332
if ( dlg.widget() )
333333
{
334-
dlg.widget()->setContext( mContext );
334+
dlg.setContext( mContext );
335335
}
336336

337337
if ( dlg.exec() == QDialog::Accepted )

0 commit comments

Comments
 (0)