summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Client/Code/Core/Commands/CmdDataModel.cpp
diff options
context:
space:
mode:
authorMahmoud Badri <mahmoud.badri@qt.io>2018-12-07 16:19:13 +0200
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2018-12-10 08:32:45 +0000
commitcf54ebd6f3591c09a7d3c1e5fdde9d8be163f02d (patch)
treeffc532db256018f7f09b141c330e15dca30b685b /src/Authoring/Client/Code/Core/Commands/CmdDataModel.cpp
parent69c3a54687eed3bca968aaba4efd87334df7304f (diff)
Fix undoing material type change doesn't update ref materials bugv2.2.0-rcv2.2.02.2
Also removed a previous hot fix (QT3DS-2768) and some cleanups in the undo/redo system. Task-number: QT3DS-2827 Change-Id: Id1bb8e89c4121dd3cf447bf29c1a0d02d034e247 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/Authoring/Client/Code/Core/Commands/CmdDataModel.cpp')
-rw-r--r--src/Authoring/Client/Code/Core/Commands/CmdDataModel.cpp30
1 files changed, 10 insertions, 20 deletions
diff --git a/src/Authoring/Client/Code/Core/Commands/CmdDataModel.cpp b/src/Authoring/Client/Code/Core/Commands/CmdDataModel.cpp
index 1e521df8..47a44b51 100644
--- a/src/Authoring/Client/Code/Core/Commands/CmdDataModel.cpp
+++ b/src/Authoring/Client/Code/Core/Commands/CmdDataModel.cpp
@@ -64,9 +64,8 @@ void SApplicationState::Notify(const SApplicationState &inOther, CDoc &inDoc)
// to a deleted item
void SApplicationState::PreNotify(const SApplicationState &inOther, CDoc &inDoc)
{
- if (m_SelectedInstance != inOther.m_SelectedInstance) {
+ if (m_SelectedInstance != inOther.m_SelectedInstance)
inDoc.DeselectAllItems(false);
- }
}
CmdDataModel::CmdDataModel(CDoc &inDoc)
@@ -96,25 +95,11 @@ bool CmdDataModel::ConsumerExists() const
return m_Consumer != nullptr;
}
-void CmdDataModel::SetConsumer(ITransactionProducer *inProducer)
-{
- if (!ConsumerExists())
- m_Consumer = std::make_shared<CTransactionConsumer>();
- inProducer->SetConsumer(m_Consumer);
-}
-
-void CmdDataModel::ReleaseConsumer(ITransactionProducer *inProducer, bool inRunNotifications)
-{
- inProducer->SetConsumer(TTransactionConsumerPtr());
- if (inRunNotifications)
- RunDoNotifications();
-}
-
void CmdDataModel::SetConsumer()
{
if (!ConsumerExists()) {
- m_Doc.GetCore()->GetDispatch();
- SetConsumer(m_Doc.GetStudioSystem());
+ m_Consumer = std::make_shared<CTransactionConsumer>();
+ m_Doc.GetStudioSystem()->SetConsumer(m_Consumer);
m_Doc.GetAssetGraph()->SetConsumer(m_Consumer);
m_BeforeDoAppState.Store(m_Doc);
}
@@ -123,11 +108,16 @@ void CmdDataModel::SetConsumer()
void CmdDataModel::ReleaseConsumer(bool inRunNotifications)
{
if (ConsumerExists()) {
- m_Doc.GetAssetGraph()->SetConsumer(TTransactionConsumerPtr());
+ m_Doc.GetAssetGraph()->SetConsumer(nullptr);
+
if (HasTransactions())
m_Doc.SetModifiedFlag(true);
m_AfterDoAppState.Store(m_Doc);
- ReleaseConsumer(m_Doc.GetStudioSystem(), inRunNotifications);
+
+ m_Doc.GetStudioSystem()->SetConsumer(nullptr);
+
+ if (inRunNotifications)
+ RunDoNotifications();
}
}