From 7646e54580adb391663b513e10bb77bedc0805f9 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 26 May 2019 23:25:58 +0200 Subject: [PATCH] fixes 0003986: Changing view attributes does not trigger 'File changed' status --- src/Gui/Document.cpp | 1 + src/Gui/Document.h | 2 +- src/Gui/ViewProviderDocumentObject.cpp | 4 ++++ src/Gui/ViewProviderDocumentObject.h | 3 +++ 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Gui/Document.cpp b/src/Gui/Document.cpp index 92493af1ba..781e1b172d 100644 --- a/src/Gui/Document.cpp +++ b/src/Gui/Document.cpp @@ -471,6 +471,7 @@ void Document::slotNewObject(const App::DocumentObject& Obj) // adding to the tree signalNewObject(*pcProvider); + pcProvider->pcDocument = this; // it is possible that a new viewprovider already claims children handleChildren3D(pcProvider); diff --git a/src/Gui/Document.h b/src/Gui/Document.h index eb2483485a..b1f7cea8f1 100644 --- a/src/Gui/Document.h +++ b/src/Gui/Document.h @@ -98,7 +98,7 @@ public: /** signal on changed Object, the 2nd argument is the changed property of the referenced document object, not of the view provider */ mutable boost::signals2::signal signalChangedObject; + const App::Property&)> signalChangedObject; /// signal on renamed Object mutable boost::signals2::signal signalRelabelObject; /// signal on activated Object diff --git a/src/Gui/ViewProviderDocumentObject.cpp b/src/Gui/ViewProviderDocumentObject.cpp index 94a3e32d5c..004fbcb1d5 100644 --- a/src/Gui/ViewProviderDocumentObject.cpp +++ b/src/Gui/ViewProviderDocumentObject.cpp @@ -56,6 +56,7 @@ PROPERTY_SOURCE(Gui::ViewProviderDocumentObject, Gui::ViewProvider) ViewProviderDocumentObject::ViewProviderDocumentObject() : pcObject(0) + , pcDocument(0) { ADD_PROPERTY(DisplayMode,((long)0)); ADD_PROPERTY(Visibility,(true)); @@ -130,6 +131,9 @@ void ViewProviderDocumentObject::onChanged(const App::Property* prop) } } + if (pcDocument) + pcDocument->setModified(true); + ViewProvider::onChanged(prop); } diff --git a/src/Gui/ViewProviderDocumentObject.h b/src/Gui/ViewProviderDocumentObject.h index c5a079a479..a66e7107d1 100644 --- a/src/Gui/ViewProviderDocumentObject.h +++ b/src/Gui/ViewProviderDocumentObject.h @@ -135,10 +135,13 @@ protected: protected: App::DocumentObject *pcObject; + Gui::Document* pcDocument; private: std::vector aDisplayEnumsArray; std::vector aDisplayModesArray; + + friend class Document; };