diff --git a/src/Gui/Clipping.cpp b/src/Gui/Clipping.cpp index 266b1f0d16..ccba033736 100644 --- a/src/Gui/Clipping.cpp +++ b/src/Gui/Clipping.cpp @@ -129,10 +129,14 @@ Clipping::Clipping(Gui::View3DInventor* view, QWidget* parent) View3DInventorViewer* viewer = view->getViewer(); d->node = static_cast(viewer->getSceneGraph()); d->node->ref(); - d->node->insertChild(d->clipX, 0); - d->node->insertChild(d->clipY, 0); - d->node->insertChild(d->clipZ, 0); - d->node->insertChild(d->clipView, 0); + int index = -1; + if (auto editingRoot = viewer->getEditingRoot()) { + index = d->node->findChild(editingRoot); + } + d->node->insertChild(d->clipX, index + 1); + d->node->insertChild(d->clipY, index + 1); + d->node->insertChild(d->clipZ, index + 1); + d->node->insertChild(d->clipView, index + 1); SoGetBoundingBoxAction action(viewer->getSoRenderManager()->getViewportRegion()); action.apply(viewer->getSceneGraph()); diff --git a/src/Gui/View3DInventorViewer.cpp b/src/Gui/View3DInventorViewer.cpp index b4ba4ce9dd..691b8c2173 100644 --- a/src/Gui/View3DInventorViewer.cpp +++ b/src/Gui/View3DInventorViewer.cpp @@ -999,6 +999,11 @@ void View3DInventorViewer::setEditingTransform(const Base::Matrix4D& mat) // NOLINTEND } +SoNode* View3DInventorViewer::getEditingRoot() const +{ + return pcEditingRoot; +} + void View3DInventorViewer::setupEditingRoot(SoNode* node, const Base::Matrix4D* mat) { if (!editViewProvider) { diff --git a/src/Gui/View3DInventorViewer.h b/src/Gui/View3DInventorViewer.h index 1392b9cf21..edbeefb847 100644 --- a/src/Gui/View3DInventorViewer.h +++ b/src/Gui/View3DInventorViewer.h @@ -249,6 +249,7 @@ public: ViewProvider* getEditingViewProvider() const; /// reset from edit mode void resetEditingViewProvider(); + SoNode* getEditingRoot() const; void setupEditingRoot(SoNode* node = nullptr, const Base::Matrix4D* mat = nullptr); void resetEditingRoot(bool updateLinks = true); void setEditingTransform(const Base::Matrix4D& mat);