Gui: Add handling for BaseFeatures outside of Body edge case
This commit is contained in:
@@ -72,9 +72,25 @@ void ViewProviderBase::setupContextMenu(QMenu* menu, QObject* receiver, const ch
|
||||
if (!base->Placement.testStatus(App::Property::Immutable) &&
|
||||
!base->Placement.testStatus(App::Property::ReadOnly) &&
|
||||
!base->Placement.testStatus(App::Property::Hidden)) {
|
||||
|
||||
// Handling of the edge case where some base features are outside the body
|
||||
// that should not happen, but it was possible to do in older FreeCAD versions.
|
||||
// This ensures that for older files it still works correctly.
|
||||
if (!getBodyViewProvider()) {
|
||||
ViewProviderPartExt::setupContextMenu(menu, receiver, member);
|
||||
}
|
||||
|
||||
ViewProvider::setupContextMenu(menu, receiver, member);
|
||||
}
|
||||
}
|
||||
Gui::ViewProvider* ViewProviderBase::startEditing(int ModNum)
|
||||
{
|
||||
if (!getBodyViewProvider()) {
|
||||
return ViewProviderPartExt::startEditing(ModNum);
|
||||
}
|
||||
|
||||
return ViewProvider::startEditing(ModNum);
|
||||
}
|
||||
|
||||
bool ViewProviderBase::setEdit(int ModNum)
|
||||
{
|
||||
@@ -82,6 +98,12 @@ bool ViewProviderBase::setEdit(int ModNum)
|
||||
if (!base->Placement.testStatus(App::Property::Immutable) &&
|
||||
!base->Placement.testStatus(App::Property::ReadOnly) &&
|
||||
!base->Placement.testStatus(App::Property::Hidden)) {
|
||||
|
||||
// same as in setupContextMenu
|
||||
if (!getBodyViewProvider()) {
|
||||
return ViewProviderPartExt::setEdit(ModNum);
|
||||
}
|
||||
|
||||
return ViewProvider::setEdit(ModNum);
|
||||
}
|
||||
|
||||
|
||||
@@ -41,6 +41,8 @@ public:
|
||||
bool doubleClicked() override;
|
||||
void setupContextMenu(QMenu* menu, QObject* receiver, const char* member) override;
|
||||
|
||||
Gui::ViewProvider* startEditing(int ModNum) override;
|
||||
|
||||
protected:
|
||||
bool setEdit(int ModNum) override;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user