summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAli Kianian <ali.kianian@qt.io>2023-04-20 11:11:52 +0300
committerAli Kianian <ali.kianian@qt.io>2023-04-21 13:44:13 +0000
commitb0c3377f1daaee0cdaf9a7b695e9391226d50c66 (patch)
tree15444eae8f163f41c4bce62c3e92e75b376fc4a1
parent94ab3edb37601f83897749b61f78c38807d46bd0 (diff)
downloadqt-creator-b0c3377f1daaee0cdaf9a7b695e9391226d50c66.tar.gz
QmlDesigner: Fix the crash caused by calling GlobalAnnotations
- Calling global annotations does nothing if we are not in the design mode - Related actions and buttons are blocked while we are not in the design mode Task-number: QDS-9729 Change-Id: Ib4d5e8c5adcbb080f42a2344cd76ce7c36532240 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r--share/qtcreator/qmldesigner/toolbar/Main.qml1
-rw-r--r--src/plugins/qmldesigner/components/toolbar/toolbarbackend.cpp2
-rw-r--r--src/plugins/qmldesigner/shortcutmanager.cpp13
3 files changed, 12 insertions, 4 deletions
diff --git a/share/qtcreator/qmldesigner/toolbar/Main.qml b/share/qtcreator/qmldesigner/toolbar/Main.qml
index 7f6a8a311c..ebed433e72 100644
--- a/share/qtcreator/qmldesigner/toolbar/Main.qml
+++ b/share/qtcreator/qmldesigner/toolbar/Main.qml
@@ -254,6 +254,7 @@ Rectangle {
ToolbarButton {
id: annotations
visible: false
+ enabled: backend.isInDesignMode
anchors.verticalCenter: parent.verticalCenter
anchors.right: shareButton.left
anchors.rightMargin: 10
diff --git a/src/plugins/qmldesigner/components/toolbar/toolbarbackend.cpp b/src/plugins/qmldesigner/components/toolbar/toolbarbackend.cpp
index f563e5eeca..1919aeedad 100644
--- a/src/plugins/qmldesigner/components/toolbar/toolbarbackend.cpp
+++ b/src/plugins/qmldesigner/components/toolbar/toolbarbackend.cpp
@@ -644,6 +644,8 @@ bool ToolBarBackend::projectOpened() const
void ToolBarBackend::launchGlobalAnnotations()
{
QmlDesignerPlugin::emitUsageStatistics(Constants::EVENT_TOOLBAR_EDIT_GLOBAL_ANNOTATION);
+
+ QTC_ASSERT(currentDesignDocument(), return);
ModelNode node = currentDesignDocument()->rewriterView()->rootModelNode();
if (node.isValid()) {
diff --git a/src/plugins/qmldesigner/shortcutmanager.cpp b/src/plugins/qmldesigner/shortcutmanager.cpp
index add971a8c1..87a873339d 100644
--- a/src/plugins/qmldesigner/shortcutmanager.cpp
+++ b/src/plugins/qmldesigner/shortcutmanager.cpp
@@ -14,11 +14,12 @@
#include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/actionmanager/actioncontainer.h>
#include <coreplugin/actionmanager/command.h>
-#include <coreplugin/icore.h>
-#include <coreplugin/idocument.h>
#include <coreplugin/editormanager/documentmodel.h>
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/coreconstants.h>
+#include <coreplugin/icore.h>
+#include <coreplugin/idocument.h>
+#include <coreplugin/modemanager.h>
#include <qmljseditor/qmljseditorconstants.h>
#include <qmlprojectmanager/qmlprojectmanagerconstants.h>
@@ -109,10 +110,16 @@ void ShortCutManager::registerActions(const Core::Context &qmlDesignerMainContex
QmlDesignerPlugin::instance()->viewManager().exportAsImage();
});
+ // Edit Global Annotations
QAction *action = new QAction(tr("Edit Global Annotations..."), this);
command = Core::ActionManager::registerAction(action, "Edit.Annotations", qmlDesignerMainContext);
Core::ActionManager::actionContainer(Core::Constants::M_EDIT)
->addAction(command, Core::Constants::G_EDIT_OTHER);
+ connect(action, &QAction::triggered, this, [] { ToolBarBackend::launchGlobalAnnotations(); });
+ connect(Core::ModeManager::instance(), &Core::ModeManager::currentModeChanged, this, [action] {
+ action->setEnabled(Core::ModeManager::currentModeId() == Core::Constants::MODE_DESIGN);
+ });
+ action->setEnabled(false);
command = Core::ActionManager::registerAction(&m_takeScreenshotAction,
QmlDesigner::Constants::TAKE_SCREENSHOT);
@@ -131,8 +138,6 @@ void ShortCutManager::registerActions(const Core::Context &qmlDesignerMainContex
qWarning() << "screenshot" << file << b << pixmap;
});
- connect(action, &QAction::triggered, this, [] { ToolBarBackend::launchGlobalAnnotations(); });
-
Core::ActionContainer *exportMenu = Core::ActionManager::actionContainer(
QmlProjectManager::Constants::EXPORT_MENU);