From f4d991f76f0c643c1e6aaa5dfd4afef7df540c62 Mon Sep 17 00:00:00 2001 From: Yoann Quenach de Quivillic Date: Thu, 12 Dec 2024 14:39:07 +0100 Subject: [PATCH] Apply suggestions from code review --- src/app/layout/qgslayoutdesignerdialog.cpp | 9 ++------- src/gui/layout/qgslayoutviewtooladdnodeitem.cpp | 11 ++++++++++- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/app/layout/qgslayoutdesignerdialog.cpp b/src/app/layout/qgslayoutdesignerdialog.cpp index 3d8fec0fd5ca..cbac5d665216 100644 --- a/src/app/layout/qgslayoutdesignerdialog.cpp +++ b/src/app/layout/qgslayoutdesignerdialog.cpp @@ -613,8 +613,8 @@ QgsLayoutDesignerDialog::QgsLayoutDesignerDialog( QWidget *parent, Qt::WindowFla #endif // Delete selection should be disabled when creating node item - connect( mAddNodeItemTool, &QgsLayoutViewTool::activated, this, [ this, backSpace ] { backSpace->setEnabled( false ); mActionDeleteSelection->setEnabled( false ); } ); - connect( mAddNodeItemTool, &QgsLayoutViewTool::deactivated, this, [ this, backSpace ] { backSpace->setEnabled( true ); mActionDeleteSelection->setEnabled( true ); } ); + connect( mAddNodeItemTool, &QgsLayoutViewTool::activated, this, [this, backSpace] { backSpace->setEnabled( false ); mActionDeleteSelection->setEnabled( false ); } ); + connect( mAddNodeItemTool, &QgsLayoutViewTool::deactivated, this, [this, backSpace] { backSpace->setEnabled( true ); mActionDeleteSelection->setEnabled( true ); } ); mActionPreviewModeOff->setChecked( true ); @@ -3936,11 +3936,6 @@ void QgsLayoutDesignerDialog::activateNewItemCreationTool( int id, bool nodeBase if ( mView ) mView->setTool( mAddNodeItemTool ); } - - if ( mLayout ) - { - mLayout->deselectAll(); - } } void QgsLayoutDesignerDialog::createLayoutPropertiesWidget() diff --git a/src/gui/layout/qgslayoutviewtooladdnodeitem.cpp b/src/gui/layout/qgslayoutviewtooladdnodeitem.cpp index c75819d48a72..56d167ebcf05 100644 --- a/src/gui/layout/qgslayoutviewtooladdnodeitem.cpp +++ b/src/gui/layout/qgslayoutviewtooladdnodeitem.cpp @@ -55,6 +55,9 @@ void QgsLayoutViewToolAddNodeItem::layoutPressEvent( QgsLayoutViewMouseEvent *ev mRubberBand.reset( QgsGui::layoutItemGuiRegistry()->createNodeItemRubberBand( mItemMetadataId, view() ) ); if ( mRubberBand ) layout()->addItem( mRubberBand.get() ); + + // On first press, deselect the currently selected item, if any + view()->deselectAll(); } if ( mRubberBand ) @@ -192,8 +195,14 @@ void QgsLayoutViewToolAddNodeItem::moveTemporaryNode( QPointF scenePoint, Qt::Ke void QgsLayoutViewToolAddNodeItem::setRubberBandNodes() { QList items = mRubberBand->childItems(); + + // Rubber band is not a QGraphicsItem with children, but may be + // a custom QGraphicsPolygonItem / QGraphicsPathItem returned by a Python plugin + // In this case, directly append it to the list. if ( items.isEmpty() ) - return; + { + items << mRubberBand.get(); + } if ( QGraphicsPolygonItem *polygonItem = dynamic_cast( items[0] ) ) {