From b18b7920bbcd71829201a5b3f3be243bd9005faa Mon Sep 17 00:00:00 2001 From: Knud Dollereder Date: Fri, 15 Sep 2023 14:16:20 +0200 Subject: [PATCH] Refuse to add properties from unselected nodes ... and select property after adding it to the model. Change-Id: I4210e9b1e27b3d396ba5f421629a2b90d2771f50 Reviewed-by: Qt CI Patch Build Bot Reviewed-by: Reviewed-by: Thomas Hartmann --- .../components/connectioneditor/bindingmodel.cpp | 12 ++++++++---- .../connectioneditor/dynamicpropertiesmodel.cpp | 11 ++++++++--- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/plugins/qmldesigner/components/connectioneditor/bindingmodel.cpp b/src/plugins/qmldesigner/components/connectioneditor/bindingmodel.cpp index 94910d34d07..cc73f4b20a3 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/bindingmodel.cpp +++ b/src/plugins/qmldesigner/components/connectioneditor/bindingmodel.cpp @@ -144,11 +144,15 @@ void BindingModel::setCurrentProperty(const AbstractProperty &property) void BindingModel::updateItem(const BindingProperty &property) { - if (auto *item = itemForProperty(property)) + if (auto *item = itemForProperty(property)) { item->updateProperty(property); - else - appendRow(new BindingModelItem(property)); - + } else { + ModelNode node = property.parentModelNode(); + if (connectionView()->isSelectedModelNode(node)) { + appendRow(new BindingModelItem(property)); + setCurrentProperty(property); + } + } m_delegate->update(currentProperty(), m_connectionView); } diff --git a/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp b/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp index 69f51a277d2..560cecd3e1b 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp +++ b/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp @@ -151,10 +151,15 @@ void DynamicPropertiesModel::updateItem(const AbstractProperty &property) if (!property.isDynamic()) return; - if (auto *item = itemForProperty(property)) + if (auto *item = itemForProperty(property)) { item->updateProperty(property); - else - addProperty(property); + } else { + ModelNode node = property.parentModelNode(); + if (selectedNodes().contains(node)) { + addProperty(property); + setCurrentProperty(property); + } + } } void DynamicPropertiesModel::removeItem(const AbstractProperty &property)