Fix rule based label/symbol renderers reset max scale for rules to

1:100000

And improve dox

Fixes #21845
This commit is contained in:
Nyall Dawson 2019-05-22 07:35:18 +10:00
parent ea6754ccc6
commit 7e78874807
4 changed files with 28 additions and 4 deletions

View File

@ -68,6 +68,13 @@ The scale value indicates the scale denominator, e.g. 1000.0 for a 1:1000 map.
.. seealso:: :py:func:`setMaximumScale`
.. seealso:: :py:func:`setScaleRange`
.. warning::
Calling setMinimumScale() places a restriction on the acceptable maximum scale for the
widget, and will alter any previously set maximum scale to pass this constraint. Always
call setMinimumScale() before setMaximumScale() when restoring a scale range in the widget, or
use the convenience method setScaleRange() instead.
%End
void setMaximumScale( double scale );
@ -80,6 +87,13 @@ The scale value indicates the scale denominator, e.g. 1000.0 for a 1:1000 map.
.. seealso:: :py:func:`setMinimumScale`
.. seealso:: :py:func:`setScaleRange`
.. warning::
Calling setMinimumScale() places a restriction on the acceptable maximum scale for the
widget, and will alter any previously set maximum scale to pass this constraint. Always
call setMinimumScale() before setMaximumScale() when restoring a scale range in the widget, or
use the convenience method setScaleRange() instead.
%End
void setScaleRange( double min, double max );

View File

@ -599,8 +599,8 @@ QgsLabelingRulePropsWidget::QgsLabelingRulePropsWidget( QgsRuleBasedLabeling::Ru
{
groupScale->setChecked( true );
// caution: rule uses scale denom, scale widget uses true scales
mScaleRangeWidget->setMaximumScale( std::max( rule->maximumScale(), 0.0 ) );
mScaleRangeWidget->setMinimumScale( std::max( rule->minimumScale(), 0.0 ) );
mScaleRangeWidget->setScaleRange( std::max( rule->minimumScale(), 0.0 ),
std::max( rule->maximumScale(), 0.0 ) );
}
mScaleRangeWidget->setMapCanvas( mMapCanvas );

View File

@ -77,6 +77,11 @@ class GUI_EXPORT QgsScaleRangeWidget : public QWidget
* \see minimumScale()
* \see setMaximumScale()
* \see setScaleRange()
*
* \warning Calling setMinimumScale() places a restriction on the acceptable maximum scale for the
* widget, and will alter any previously set maximum scale to pass this constraint. Always
* call setMinimumScale() before setMaximumScale() when restoring a scale range in the widget, or
* use the convenience method setScaleRange() instead.
*/
void setMinimumScale( double scale );
@ -86,6 +91,11 @@ class GUI_EXPORT QgsScaleRangeWidget : public QWidget
* \see maximumScale()
* \see setMinimumScale()
* \see setScaleRange()
*
* \warning Calling setMinimumScale() places a restriction on the acceptable maximum scale for the
* widget, and will alter any previously set maximum scale to pass this constraint. Always
* call setMinimumScale() before setMaximumScale() when restoring a scale range in the widget, or
* use the convenience method setScaleRange() instead.
*/
void setMaximumScale( double scale );

View File

@ -659,8 +659,8 @@ QgsRendererRulePropsWidget::QgsRendererRulePropsWidget( QgsRuleBasedRenderer::Ru
if ( mRule->dependsOnScale() )
{
groupScale->setChecked( true );
mScaleRangeWidget->setMaximumScale( std::max( rule->maximumScale(), 0.0 ) );
mScaleRangeWidget->setMinimumScale( std::max( rule->minimumScale(), 0.0 ) );
mScaleRangeWidget->setScaleRange( std::max( rule->minimumScale(), 0.0 ),
std::max( rule->maximumScale(), 0.0 ) );
}
mScaleRangeWidget->setMapCanvas( mContext.mapCanvas() );