forked from qt-creator/qt-creator
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:
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
|
@@ -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*/)
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user