aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 20027265685..488d7d2bb99 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") {