QmlDesigner: Close the popup when model is detached

This happens when leaving the edit mode or the document
is changed.

Task-number: QDS-10707
Change-Id: I4b4e2511674d38c2d733db29070c01252c27c386
Reviewed-by: Aleksei German <aleksei.german@qt.io>
This commit is contained in:
Thomas Hartmann
2023-09-19 18:17:01 +02:00
parent ffe3670d90
commit f2343b417e
4 changed files with 10 additions and 3 deletions

View File

@@ -43,7 +43,7 @@ PopupDialog {
Connections {
target: root.backend
function onPopupTargetRemoved() {
function onPopupShouldClose() {
root.close()
}
}

View File

@@ -493,7 +493,7 @@ void ConnectionModel::nodeAboutToBeRemoved(const ModelNode &removedNode)
if (selectedSignal.isValid()) {
ModelNode targetNode = getTargetNodeForConnection(selectedSignal.parentModelNode());
if (targetNode == removedNode) {
emit m_delegate->popupTargetRemoved();
emit m_delegate->popupShouldClose();
}
}
}
@@ -2103,4 +2103,9 @@ ConnectionEditorStatements::ComparativeStatement ConditionListModel::toStatement
return {};
}
void QmlDesigner::ConnectionModel::modelAboutToBeDetached()
{
emit m_delegate->popupShouldClose();
}
} // namespace QmlDesigner

View File

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

View File

@@ -169,6 +169,7 @@ void ConnectionView::modelAboutToBeDetached(Model *model)
bindingModel()->reset();
dynamicPropertiesModel()->reset();
connectionModel()->resetModel();
connectionModel()->modelAboutToBeDetached();
}
void ConnectionView::nodeCreated(const ModelNode & /*createdNode*/)