aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2024-01-29 16:34:48 +0200
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2024-01-29 15:32:18 +0000
commit2122ff37f12705bf0964d444bf2e874cc3a5c6df (patch)
tree5b4d56f9a1c52d8d3d4451e746516c951b5f1914
parent65ea37c13f025301129b78f79d9f412dbb727b1f (diff)
EffectComposer: Consider effect changes to be part of current document
This will allow saving effects when current document is saved for any reason, including at application shutdown. If effect is not yet saved once (i.e. it doesn't have a name yet), it will not be saved in response to global save triggers to avoid complications with requiring user input to provide the name. Fixes: QDS-11436 Fixes: QDS-11446 Change-Id: I412ee4893e926d527b4f03f5f6c0c9b4e923bc1e Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
-rw-r--r--src/plugins/effectcomposer/effectcomposerwidget.cpp19
-rw-r--r--src/plugins/qmldesigner/components/integration/designdocument.cpp6
-rw-r--r--src/plugins/qmldesigner/components/integration/designdocument.h2
3 files changed, 27 insertions, 0 deletions
diff --git a/src/plugins/effectcomposer/effectcomposerwidget.cpp b/src/plugins/effectcomposer/effectcomposerwidget.cpp
index ebd793a3ad..3be9284f4d 100644
--- a/src/plugins/effectcomposer/effectcomposerwidget.cpp
+++ b/src/plugins/effectcomposer/effectcomposerwidget.cpp
@@ -16,6 +16,8 @@
#include "theme.h"
#include <coreplugin/icore.h>
+#include <coreplugin/idocument.h>
+#include <coreplugin/editormanager/editormanager.h>
#include <qmldesigner/documentmanager.h>
#include <qmldesigner/qmldesignerconstants.h>
@@ -108,6 +110,23 @@ EffectComposerWidget::EffectComposerWidget(EffectComposerView *view)
m_importScan.timer->start(100);
});
+
+ connect(m_effectComposerModel.data(), &EffectComposerModel::hasUnsavedChangesChanged,
+ this, [this]() {
+ if (m_effectComposerModel->hasUnsavedChanges() && !m_effectComposerModel->currentComposition().isEmpty()) {
+ if (auto doc = QmlDesigner::QmlDesignerPlugin::instance()->documentManager().currentDesignDocument())
+ doc->setModified();
+ }
+ });
+
+ connect(Core::EditorManager::instance(), &Core::EditorManager::aboutToSave,
+ this, [this](Core::IDocument *document) {
+ if (m_effectComposerModel->hasUnsavedChanges()) {
+ QString compName = m_effectComposerModel->currentComposition();
+ if (!compName.isEmpty())
+ m_effectComposerModel->saveComposition(compName);
+ }
+ });
}
diff --git a/src/plugins/qmldesigner/components/integration/designdocument.cpp b/src/plugins/qmldesigner/components/integration/designdocument.cpp
index 3ad09a8693..96cfc80da8 100644
--- a/src/plugins/qmldesigner/components/integration/designdocument.cpp
+++ b/src/plugins/qmldesigner/components/integration/designdocument.cpp
@@ -427,6 +427,12 @@ bool DesignDocument::hasProject() const
return !DocumentManager::currentProjectDirPath().isEmpty();
}
+void DesignDocument::setModified()
+{
+ if (!m_documentTextModifier.isNull())
+ m_documentTextModifier->textDocument()->setModified(true);
+}
+
void DesignDocument::changeToInFileComponentModel(ComponentTextModifier *textModifer)
{
m_inFileComponentTextModifier.reset(textModifer);
diff --git a/src/plugins/qmldesigner/components/integration/designdocument.h b/src/plugins/qmldesigner/components/integration/designdocument.h
index aa7ced784f..0d75141205 100644
--- a/src/plugins/qmldesigner/components/integration/designdocument.h
+++ b/src/plugins/qmldesigner/components/integration/designdocument.h
@@ -89,6 +89,8 @@ public:
Utils::FilePath projectFolder() const;
bool hasProject() const;
+ void setModified();
+
signals:
void displayNameChanged(const QString &newFileName);
void dirtyStateChanged(bool newState);