Skip to content

Commit

Permalink
Gui: improve deletion handling in origin feature
Browse files Browse the repository at this point in the history
  • Loading branch information
realthunder committed Jul 16, 2019
1 parent 286aa71 commit 0d49031
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 12 deletions.
12 changes: 8 additions & 4 deletions src/Gui/ViewProviderOrigin.cpp
Expand Up @@ -64,10 +64,11 @@ PROPERTY_SOURCE(Gui::ViewProviderOrigin, Gui::ViewProviderDocumentObject)
*/
ViewProviderOrigin::ViewProviderOrigin()
{
ADD_PROPERTY_TYPE ( Size, (Base::Vector3d(10,10,10)), 0, App::Prop_ReadOnly,
QT_TRANSLATE_NOOP("App::Property", "The displayed size of the origin"));
ADD_PROPERTY_TYPE ( Size, (Base::Vector3d(10,10,10)), 0, App::Prop_None,
QT_TRANSLATE_NOOP("App::Property", "The displayed size of the origin"));
Size.setStatus(App::Property::ReadOnly, true);

sPixmap = "CoordinateSystem";
sPixmap = "Std_CoordinateSystem";
Visibility.setValue(false);

pcGroupChildren = new SoGroup();
Expand Down Expand Up @@ -212,7 +213,10 @@ bool ViewProviderOrigin::onDelete(const std::vector<std::string> &) {
return false;
}

for (auto obj: origin->OriginFeatures.getValues() ) {
auto objs = origin->OriginFeatures.getValues();
origin->OriginFeatures.setValues({});

for (auto obj: objs ) {
Gui::Command::doCommand( Gui::Command::Doc, "App.getDocument(\"%s\").removeObject(\"%s\")",
obj->getDocument()->getName(), obj->getNameInDocument() );
}
Expand Down
16 changes: 8 additions & 8 deletions src/Gui/ViewProviderOriginGroupExtension.cpp
Expand Up @@ -134,12 +134,14 @@ void ViewProviderOriginGroupExtension::slotChangedObjectGui ( const Gui::ViewPro
}

void ViewProviderOriginGroupExtension::updateOriginSize () {
auto owner = getExtendedViewProvider()->getObject();

if(getExtendedViewProvider()->getObject()->isRemoving() ||
getExtendedViewProvider()->getObject()->getDocument()->testStatus(App::Document::Restoring))
if(!owner->getNameInDocument() ||
owner->isRemoving() ||
owner->getDocument()->testStatus(App::Document::Restoring))
return;

auto* group = getExtendedViewProvider()->getObject()->getExtensionByType<App::OriginGroupExtension>();
auto* group = owner->getExtensionByType<App::OriginGroupExtension>();
if(!group)
return;

Expand All @@ -152,18 +154,16 @@ void ViewProviderOriginGroupExtension::updateOriginSize () {

Gui::ViewProvider *vp = Gui::Application::Instance->getViewProvider(origin);
if (!vp) {
throw Base::RuntimeError ("No view provider linked to the Origin");
Base::Console().Error ("No view provider linked to the Origin\n");
return;
}
assert ( vp->isDerivedFrom ( Gui::ViewProviderOrigin::getClassTypeId () ) );
vpOrigin = static_cast <Gui::ViewProviderOrigin *> ( vp );
} catch (const Base::Exception &ex) {
// if is restoring it is normal that the origin property is null until after restored, so no need to report this.
if(!getExtendedViewProvider()->getDocument()->getDocument()->testStatus(App::Document::Restoring))
Base::Console().Error ("%s\n", ex.what() );
Base::Console().Error ("%s\n", ex.what() );
return;
}


Gui::Document* gdoc = getExtendedViewProvider()->getDocument();
if(!gdoc)
return;
Expand Down

0 comments on commit 0d49031

Please sign in to comment.