diff --git a/sources/diagram.cpp b/sources/diagram.cpp index 3bb984338..f7c336ed6 100644 --- a/sources/diagram.cpp +++ b/sources/diagram.cpp @@ -2279,6 +2279,7 @@ void Diagram::setItemGroup(QGraphicsItem *item, const QUuid &group) if (m_project) { m_project->dataBase()->itemGroupChanged(item); } + emit itemGroupChanged(); } /** diff --git a/sources/diagram.h b/sources/diagram.h index 96299d036..ff7ff1f9b 100644 --- a/sources/diagram.h +++ b/sources/diagram.h @@ -325,6 +325,10 @@ class Diagram : public QGraphicsScene void diagramActivated(); void diagramInformationChanged(); + + /// Emitted by setItemGroup(): an item joined or left a group + /// without the selection changing (#1144) + void itemGroupChanged(); }; Q_DECLARE_METATYPE(Diagram *) diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index e28927dcd..46cec2c5d 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -3185,6 +3185,12 @@ void QETDiagramEditor::diagramWasAdded(DiagramView *dv) this, &QETDiagramEditor::selectionChanged, Qt::DirectConnection); + //Grouping leaves the selection as it is, so without this Group + //and Ungroup would keep the state from before (#1144) + connect(dv->diagram(), + &Diagram::itemGroupChanged, + this, + &QETDiagramEditor::slot_updateComplexActions); connect(dv, &DiagramView::modeChanged, this, &QETDiagramEditor::slot_updateModeActions); connect(dv, &DiagramView::elementPlacementStarted, this, &QETDiagramEditor::rememberPlacedElement); }