diff options
author | Aleksei German <aleksei.german@qt.io> | 2022-12-06 14:42:29 +0100 |
---|---|---|
committer | Aleksei German <aleksei.german@qt.io> | 2022-12-08 13:24:39 +0000 |
commit | e9e67d897bd4d2bc1f683e67ed6ee57b1c5821eb (patch) | |
tree | e7a7b4d3eb9de8771d18bd5f42d746433a39cbb4 | |
parent | 6dfe3250837ba5e224e5809a75575600afa841d5 (diff) | |
download | qt-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.cpp | 17 |
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") { |