Gui: add coinRemoveAllChildren to work around Coin3D bug

See bug description:
https://bitbucket.org/Coin3D/coin/pull-requests/119/fix-sochildlist-auditing/diff

Because of path based rendering (SoFCPathAnnotation) in mouse over
highlight, this bug causes crash more frequently here comparing to
upstream.

All C++ calling of SoGroup::removeAllChildren() is replaced by
Gui::coinRemoveAllChildren(), and python code is fixed by monkey
patching SoGroup.removeAllChildren() in FreeCADGuiInit.py.
This commit is contained in:
Zheng, Lei
2019-05-31 06:28:00 +08:00
committed by wmayer
parent c744157e9a
commit c8891be856
36 changed files with 115 additions and 55 deletions

View File

@@ -848,8 +848,8 @@ void ManualAlignment::startAlignment(Base::Type mousemodel)
void ManualAlignment::continueAlignment()
{
myFixedGroup.clearPoints();
d->picksepLeft->removeAllChildren();
d->picksepRight->removeAllChildren();
coinRemoveAllChildren(d->picksepLeft);
coinRemoveAllChildren(d->picksepRight);
if (!myAlignModel.isEmpty()) {
AlignmentGroup& grp = myAlignModel.activeGroup();
@@ -891,8 +891,8 @@ void ManualAlignment::reset()
myFixedGroup.setAlignable(false);
myFixedGroup.clear();
d->picksepLeft->removeAllChildren();
d->picksepRight->removeAllChildren();
coinRemoveAllChildren(d->picksepLeft);
coinRemoveAllChildren(d->picksepRight);
if (myDocument) {
this->connectDocumentDeletedObject.disconnect();
@@ -1186,8 +1186,8 @@ void ManualAlignment::onClear()
myAlignModel.activeGroup().clear();
myFixedGroup.clear();
d->picksepLeft->removeAllChildren();
d->picksepRight->removeAllChildren();
coinRemoveAllChildren(d->picksepLeft);
coinRemoveAllChildren(d->picksepRight);
}
void ManualAlignment::onCancel()