diff --git a/python/PyQt6/gui/auto_generated/qgsextentwidget.sip.in b/python/PyQt6/gui/auto_generated/qgsextentwidget.sip.in index f1616ef996f..3b8307c421e 100644 --- a/python/PyQt6/gui/auto_generated/qgsextentwidget.sip.in +++ b/python/PyQt6/gui/auto_generated/qgsextentwidget.sip.in @@ -238,6 +238,8 @@ to permit access to the map canvas) virtual void dropEvent( QDropEvent *event ); + virtual void showEvent( QShowEvent *event ); + }; diff --git a/python/gui/auto_generated/qgsextentwidget.sip.in b/python/gui/auto_generated/qgsextentwidget.sip.in index 567d4834bc3..b3fbeb14e68 100644 --- a/python/gui/auto_generated/qgsextentwidget.sip.in +++ b/python/gui/auto_generated/qgsextentwidget.sip.in @@ -238,6 +238,8 @@ to permit access to the map canvas) virtual void dropEvent( QDropEvent *event ); + virtual void showEvent( QShowEvent *event ); + }; diff --git a/src/gui/qgsextentwidget.cpp b/src/gui/qgsextentwidget.cpp index 3b18a3a637b..a058543f527 100644 --- a/src/gui/qgsextentwidget.cpp +++ b/src/gui/qgsextentwidget.cpp @@ -585,8 +585,7 @@ void QgsExtentWidget::setMapCanvas( QgsMapCanvas *canvas, bool drawOnCanvasOptio mCurrentExtentButton->setVisible( true ); mUseCanvasExtentAction->setVisible( true ); - if ( drawOnCanvasOption ) - mDrawOnCanvasAction->setVisible( true ); + mDrawOnCanvasAction->setVisible( drawOnCanvasOption && !mBlockDrawOnCanvas ); mCondensedToolButton->setToolTip( tr( "Set to current map canvas extent" ) ); mCondensedToolButton->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionMapIdentification.svg" ) ) ); @@ -667,3 +666,20 @@ void QgsExtentWidget::dropEvent( QDropEvent *event ) mCondensedLineEdit->setHighlighted( false ); update(); } + +void QgsExtentWidget::showEvent( QShowEvent * ) +{ + if ( mFirstShow ) + { + // we don't support select on canvas if the dialog is modal + if ( QWidget *parentWindow = window() ) + { + if ( parentWindow->isModal() ) + { + mBlockDrawOnCanvas = true; + mDrawOnCanvasAction->setVisible( false ); + } + } + mFirstShow = false; + } +} diff --git a/src/gui/qgsextentwidget.h b/src/gui/qgsextentwidget.h index fcd3abf5929..ea6615d10ab 100644 --- a/src/gui/qgsextentwidget.h +++ b/src/gui/qgsextentwidget.h @@ -241,6 +241,7 @@ class GUI_EXPORT QgsExtentWidget : public QWidget, private Ui::QgsExtentGroupBox void dragEnterEvent( QDragEnterEvent *event ) override; void dragLeaveEvent( QDragLeaveEvent *event ) override; void dropEvent( QDropEvent *event ) override; + void showEvent( QShowEvent *event ) override; private slots: @@ -292,6 +293,10 @@ class GUI_EXPORT QgsExtentWidget : public QWidget, private Ui::QgsExtentGroupBox bool mHasFixedOutputCrs = false; QRegularExpression mCondensedRe; + + bool mFirstShow = true; + bool mBlockDrawOnCanvas = false; + void setValid( bool valid ); void setExtentToLayerExtent( const QString &layerId );