Extensions: Fix visibility restore issue
This commit is contained in:
parent
ed32752674
commit
ab692a4c08
|
@ -612,9 +612,9 @@ void ViewProvider::dropObject(App::DocumentObject* obj) {
|
|||
|
||||
void ViewProvider::Restore(Base::XMLReader& reader) {
|
||||
|
||||
auto vector = getExtensionsDerivedFromType<Gui::ViewProviderExtension>();
|
||||
for(Gui::ViewProviderExtension* ext : vector)
|
||||
ext->extensionRestore(reader);
|
||||
setStatus(Gui::isRestoring, true);
|
||||
TransactionalObject::Restore(reader);
|
||||
setStatus(Gui::isRestoring, false);
|
||||
}
|
||||
|
||||
void ViewProvider::updateData(const App::Property* prop) {
|
||||
|
|
|
@ -71,7 +71,8 @@ class ObjectItem;
|
|||
|
||||
enum ViewStatus {
|
||||
UpdateData = 0,
|
||||
Detach = 1
|
||||
Detach = 1,
|
||||
isRestoring = 2
|
||||
};
|
||||
|
||||
|
||||
|
@ -312,6 +313,7 @@ public:
|
|||
|
||||
//restoring the object from document: this may itnerest extensions, hence call them
|
||||
virtual void Restore(Base::XMLReader& reader);
|
||||
bool isRestoring() {return testStatus(Gui::isRestoring);};
|
||||
|
||||
|
||||
/** @name Display mask modes
|
||||
|
|
|
@ -69,8 +69,6 @@ public:
|
|||
/// Shows the view provider
|
||||
virtual void extensionShow(void) { };
|
||||
|
||||
virtual void extensionRestore(Base::XMLReader& reader) { };
|
||||
|
||||
virtual SoSeparator* extensionGetFrontRoot(void) const {return nullptr;}
|
||||
virtual SoGroup* extensionGetChildRoot(void) const {return nullptr;}
|
||||
virtual SoSeparator* extensionGetBackRoot(void) const {return nullptr;}
|
||||
|
|
|
@ -140,7 +140,7 @@ void ViewProviderGroupExtension::extensionShow(void) {
|
|||
|
||||
// when reading the Visibility property from file then do not hide the
|
||||
// objects of this group because they have stored their visibility status, too
|
||||
if (!getExtendedViewProvider()->Visibility.testStatus(App::Property::User1) && !this->visible) {
|
||||
if (!getExtendedViewProvider()->isRestoring() && !this->visible) {
|
||||
auto* group = getExtendedViewProvider()->getObject()->getExtensionByType<App::GroupExtension>();
|
||||
|
||||
const std::vector<App::DocumentObject*> & links = group->Group.getValues();
|
||||
|
@ -160,7 +160,7 @@ void ViewProviderGroupExtension::extensionHide(void) {
|
|||
|
||||
// when reading the Visibility property from file then do not hide the
|
||||
// objects of this group because they have stored their visibility status, too
|
||||
if (!getExtendedViewProvider()->Visibility.testStatus(App::Property::User1) && this->visible) {
|
||||
if (!getExtendedViewProvider()->isRestoring() && this->visible) {
|
||||
|
||||
auto* group = getExtendedViewProvider()->getObject()->getExtensionByType<App::GroupExtension>();
|
||||
|
||||
|
@ -197,13 +197,6 @@ bool ViewProviderGroupExtension::extensionOnDelete(const std::vector< std::strin
|
|||
return true;
|
||||
}
|
||||
|
||||
void ViewProviderGroupExtension::extensionRestore(Base::XMLReader& reader) {
|
||||
|
||||
getExtendedViewProvider()->Visibility.setStatus(App::Property::User1, true); // tmp. set
|
||||
ViewProviderExtension::extensionRestore(reader);
|
||||
getExtendedViewProvider()->Visibility.setStatus(App::Property::User1, false); // unset
|
||||
}
|
||||
|
||||
|
||||
namespace Gui {
|
||||
PROPERTY_SOURCE_TEMPLATE(Gui::ViewProviderGroupExtensionPython, Gui::ViewProviderGroupExtension)
|
||||
|
|
|
@ -51,7 +51,6 @@ public:
|
|||
virtual void extensionShow(void) override;
|
||||
|
||||
virtual bool extensionOnDelete(const std::vector<std::string> &) override;
|
||||
virtual void extensionRestore(Base::XMLReader& reader);
|
||||
|
||||
private:
|
||||
bool visible; // helper variable
|
||||
|
|
Loading…
Reference in New Issue
Block a user