Gui: Prevent the editing root from getting clipped

This commit is contained in:
captain0xff
2026-01-24 22:47:34 +05:30
committed by Kacper Donat
parent acdc4041fd
commit f2c0f9c86d
3 changed files with 14 additions and 4 deletions

View File

@@ -129,10 +129,14 @@ Clipping::Clipping(Gui::View3DInventor* view, QWidget* parent)
View3DInventorViewer* viewer = view->getViewer();
d->node = static_cast<SoGroup*>(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());

View File

@@ -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) {

View File

@@ -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);