From f67d960146d4a70618c0251a844c11edaee3df30 Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Tue, 24 Mar 2020 07:18:50 +0800 Subject: [PATCH] App: record transaction on non DocumentObject Related #0004265 --- src/App/Document.cpp | 8 ++------ src/Gui/Command.cpp | 8 +++++++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/App/Document.cpp b/src/App/Document.cpp index 4d1fa65c96..64d0cc8aca 100644 --- a/src/App/Document.cpp +++ b/src/App/Document.cpp @@ -1152,12 +1152,8 @@ void Document::_checkTransaction(DocumentObject* pcDelObj, const Property *What, const char *name = GetApplication().getActiveTransaction(&tid); if(name && tid>0) { bool ignore = false; - if(What) { - auto parent = What->getContainer(); - auto parentObj = Base::freecad_dynamic_cast(parent); - if(!parentObj || What->testStatus(Property::NoModify)) - ignore = true; - } + if(What && What->testStatus(Property::NoModify)) + ignore = true; if(FC_LOG_INSTANCE.isEnabled(FC_LOGLEVEL_LOG)) { if(What) FC_LOG((ignore?"ignore":"auto") << " transaction (" diff --git a/src/Gui/Command.cpp b/src/Gui/Command.cpp index 32720506d7..be9d346b28 100644 --- a/src/Gui/Command.cpp +++ b/src/Gui/Command.cpp @@ -381,7 +381,13 @@ void Command::invoke(int i, TriggerSource trigger) if(displayText.empty()) displayText = getName(); } - App::AutoTransaction committer((eType&NoTransaction)?0:displayText.c_str(),true); + + // Because Transaction now captures ViewObject changes, auto named + // transaction is disabled here to avoid too many unnecessary transactions. + // + // App::AutoTransaction committer((eType&NoTransaction)?0:displayText.c_str(),true); + App::AutoTransaction committer(0,true); + // Do not query _pcAction since it isn't created necessarily #ifdef FC_LOGUSERACTION Base::Console().Log("CmdG: %s\n",sName);