From 630ed6b47017497de093589ce16c51756cb112a3 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Wed, 1 Mar 2023 15:05:23 +0100 Subject: [PATCH] Utils: setSafeGeomLayerId --- src/Mod/Sketcher/Gui/Utils.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/Mod/Sketcher/Gui/Utils.h b/src/Mod/Sketcher/Gui/Utils.h index 60cef10b6d..547246a6a2 100644 --- a/src/Mod/Sketcher/Gui/Utils.h +++ b/src/Mod/Sketcher/Gui/Utils.h @@ -178,5 +178,22 @@ auto getSafeGeomLayerId(T geom) return layerId; } +/** sets the visual layer id (not the one of the GeometryFacade, but the index to PropertyVisualLayerList) for a geometry or GeometryFacade. + * NOTE: If no ViewProviderSketchGeometryExtension is present, one is created. + * */ +template +void setSafeGeomLayerId(T geom, int layerindex) +{ + // create extension if none existing + if(!geom->hasExtension(SketcherGui::ViewProviderSketchGeometryExtension::getClassTypeId())) { + geom->setExtension(std::make_unique()); + } + + auto vpext = std::static_pointer_cast( + geom->getExtension(SketcherGui::ViewProviderSketchGeometryExtension::getClassTypeId()).lock()); + + vpext->setVisualLayerId(layerindex); +} + #endif // SKETCHERGUI_Recompute_H