diff --git a/src/App/Document.cpp b/src/App/Document.cpp index 87faad5e77..8e4eac1cf2 100644 --- a/src/App/Document.cpp +++ b/src/App/Document.cpp @@ -2189,7 +2189,7 @@ int Document::recompute() if (skip) return 0; - ObjectStatusLocker exe(Document::Recomputing, this); + Base::ObjectStatusLocker exe(Document::Recomputing, this); // delete recompute log for (auto LogEntry: _RecomputeLog) diff --git a/src/App/DocumentObject.cpp b/src/App/DocumentObject.cpp index 928d60d84d..aedcc38abe 100644 --- a/src/App/DocumentObject.cpp +++ b/src/App/DocumentObject.cpp @@ -27,6 +27,7 @@ #endif #include +#include #include "Document.h" #include "DocumentObject.h" @@ -79,7 +80,7 @@ App::DocumentObjectExecReturn *DocumentObject::recompute(void) return new App::DocumentObjectExecReturn("Links go out of the allowed scope", this); // set/unset the execution bit - ObjectStatusLocker exe(App::Recompute, this); + Base::ObjectStatusLocker exe(App::Recompute, this); return this->execute(); } diff --git a/src/App/DocumentObject.h b/src/App/DocumentObject.h index 7b58ebff0d..6b56a99951 100644 --- a/src/App/DocumentObject.h +++ b/src/App/DocumentObject.h @@ -300,19 +300,6 @@ private: bool _isInOutListRecursive(const DocumentObject *act, const DocumentObject* test, const DocumentObject* checkObj, int depth) const; }; -template -class ObjectStatusLocker -{ -public: - ObjectStatusLocker(Status s, Object* o) : status(s), obj(o) - { obj->setStatus(status, true); } - ~ObjectStatusLocker() - { obj->setStatus(status, false); } -private: - Status status; - Object* obj; -}; - } //namespace App #endif // APP_DOCUMENTOBJECT_H diff --git a/src/App/FeaturePython.cpp b/src/App/FeaturePython.cpp index f521622ed0..0a90b43a06 100644 --- a/src/App/FeaturePython.cpp +++ b/src/App/FeaturePython.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include "FeaturePython.h" @@ -63,7 +64,7 @@ bool FeaturePythonImp::execute() Py::Object feature = static_cast(proxy)->getValue(); if (feature.hasAttr(std::string("execute"))) { if (feature.hasAttr("__object__")) { - ObjectStatusLocker exe(App::PythonCall, object); + Base::ObjectStatusLocker exe(App::PythonCall, object); Py::Callable method(feature.getAttr(std::string("execute"))); Py::Tuple args; Py::Object res = method.apply(args); @@ -72,7 +73,7 @@ bool FeaturePythonImp::execute() return true; } else { - ObjectStatusLocker exe(App::PythonCall, object); + Base::ObjectStatusLocker exe(App::PythonCall, object); Py::Callable method(feature.getAttr(std::string("execute"))); Py::Tuple args(1); args.setItem(0, Py::Object(object->getPyObject(), true)); diff --git a/src/Base/Tools.h b/src/Base/Tools.h index 5025b092c4..02b7dc6165 100644 --- a/src/Base/Tools.h +++ b/src/Base/Tools.h @@ -146,6 +146,20 @@ private: Private* d; }; +template +class BaseExport ObjectStatusLocker +{ +public: + ObjectStatusLocker(Status s, Object* o, bool st = true) : status(s), obj(o), state(st) + { obj->setStatus(status, state); } + ~ObjectStatusLocker() + { obj->setStatus(status, !state); } +private: + Status status; + Object* obj; + bool state; +}; + // ---------------------------------------------------------------------------- struct BaseExport Tools