QmlDesigner: Close dialog if target is removed

If the target is removed also the connection is removed and
we close the dialog.

Change-Id: I361e89ef64484e39bc0068e103f542cbc9dcbf78
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Aleksei German <aleksei.german@qt.io>
This commit is contained in:
Thomas Hartmann
2023-09-18 17:34:39 +02:00
parent ffa4aba2c8
commit 1b9ed62028
5 changed files with 29 additions and 1 deletions

View File

@@ -7,7 +7,7 @@ import StudioTheme 1.0 as StudioTheme
import HelperWidgets 2.0 as HelperWidgets
PopupDialog {
id: root
property alias backend: form.backend
titleBar: Row {
@@ -41,5 +41,13 @@ PopupDialog {
ConnectionsDialogForm {
id: form
Connections {
target: root.backend
onPopupTargetRemoved: {
root.close()
}
}
}
}

View File

@@ -487,6 +487,17 @@ void ConnectionModel::selectProperty(const SignalHandlerProperty &property)
}
}
void ConnectionModel::nodeAboutToBeRemoved(const ModelNode &removedNode)
{
SignalHandlerProperty selectedSignal = signalHandlerPropertyForRow(currentIndex());
if (selectedSignal.isValid()) {
ModelNode targetNode = getTargetNodeForConnection(selectedSignal.parentModelNode());
if (targetNode == removedNode) {
emit m_delegate->popupTargetRemoved();
}
}
}
void ConnectionModel::handleException()
{
QMessageBox::warning(nullptr, tr("Error"), m_exceptionError);

View File

@@ -71,6 +71,8 @@ public:
void selectProperty(const SignalHandlerProperty &property);
void nodeAboutToBeRemoved(const ModelNode &removedNode);
signals:
void currentIndexChanged();
@@ -296,6 +298,7 @@ signals:
void hasConditionChanged();
void hasElseChanged();
void sourceChanged();
void popupTargetRemoved();
private:
int currentRow() const;

View File

@@ -176,6 +176,11 @@ void ConnectionView::nodeCreated(const ModelNode & /*createdNode*/)
connectionModel()->resetModel();
}
void ConnectionView::nodeAboutToBeRemoved(const ModelNode &removedNode)
{
connectionModel()->nodeAboutToBeRemoved(removedNode);
}
void ConnectionView::nodeRemoved(const ModelNode & /*removedNode*/,
const NodeAbstractProperty & /*parentProperty*/,
AbstractView::PropertyChangeFlags /*propertyChange*/)

View File

@@ -39,6 +39,7 @@ public:
void modelAboutToBeDetached(Model *model) override;
void nodeCreated(const ModelNode &createdNode) override;
void nodeAboutToBeRemoved(const ModelNode &removedNode) override;
void nodeRemoved(const ModelNode &removedNode, const NodeAbstractProperty &parentProperty, PropertyChangeFlags propertyChange) override;
void nodeReparented(const ModelNode &node, const NodeAbstractProperty &newPropertyParent,
const NodeAbstractProperty &oldPropertyParent, AbstractView::PropertyChangeFlags propertyChange) override;