summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksei German <aleksei.german@qt.io>2022-12-06 14:42:29 +0100
committerAleksei German <aleksei.german@qt.io>2022-12-08 13:24:39 +0000
commite9e67d897bd4d2bc1f683e67ed6ee57b1c5821eb (patch)
treee7a7b4d3eb9de8771d18bd5f42d746433a39cbb4
parent6dfe3250837ba5e224e5809a75575600afa841d5 (diff)
downloadqt-creator-e9e67d897bd4d2bc1f683e67ed6ee57b1c5821eb.tar.gz
QmlDesigner: Fix Connections status in ContextMenu
Task-number: QDS-8521 Change-Id: Id0b835fb14b18563d4ecc0c1b2039b9bb181c32c Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
-rw-r--r--src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
index 2002726568..488d7d2bb9 100644
--- a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
@@ -40,6 +40,7 @@
#include <QImageReader>
#include <QMessageBox>
#include <QMimeData>
+#include <QScopeGuard>
#include <exception>
@@ -610,31 +611,29 @@ public:
{
menu()->clear();
- menu()->setEnabled(true);
-
const auto selection = selectionContext();
+
+ bool showMenu = false;
+ auto cleanup = qScopeGuard([&]{ menu()->setEnabled(showMenu); });
+
if (!selection.isValid())
return;
if (!selection.singleNodeIsSelected())
return;
- if (!action()->isEnabled())
- return;
ModelNode currentNode = selection.currentSingleSelectedNode();
if (!currentNode.isValid())
return;
+ if (!currentNode.hasId())
+ return;
+ showMenu = true;
QmlObjectNode currentObjectNode(currentNode);
QStringList signalsList = getSignalsList(currentNode);
QList<SlotList> slotsLists = getSlotsLists(currentNode);
- if (!currentNode.hasId()) {
- menu()->setEnabled(false);
- return;
- }
-
for (const ModelNode &connectionNode : currentObjectNode.getAllConnections()) {
for (const AbstractProperty &property : connectionNode.properties()) {
if (property.isSignalHandlerProperty() && property.name() != "target") {