From 3f19bcbeef467afe0f7cd27ab8a634efbf72e17e Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Sat, 18 Mar 2023 06:49:23 +0100 Subject: [PATCH] Sketcher: Elements Widget - Fix crash when moving external geometry to another layer ==================================================================================== As reported: https://forum.freecad.org/viewtopic.php?p=667426#p667426 Support for moving external geometry to another layer will come in the future. --- src/Mod/Sketcher/Gui/TaskSketcherElements.cpp | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp b/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp index a851f342d2..0da222ab49 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp +++ b/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -386,12 +387,19 @@ void ElementView::changeLayer(int layer) bool anychanged = false; for(auto geoid : geoids) { - auto currentlayer = getSafeGeomLayerId(geometry[geoid]); - if( currentlayer != layer) { - auto geo = geometry[geoid]->clone(); - setSafeGeomLayerId(geo, layer); - newgeometry[geoid] = geo; - anychanged = true; + if(geoid >= 0) { // currently only internal geometry can be changed from one layer to another + auto currentlayer = getSafeGeomLayerId(geometry[geoid]); + if( currentlayer != layer) { + auto geo = geometry[geoid]->clone(); + setSafeGeomLayerId(geo, layer); + newgeometry[geoid] = geo; + anychanged = true; + } + } + else { + Gui::TranslatedNotification(sketchobject, + QObject::tr("Unsupported visual layer operation"), + QObject::tr("It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted")); } } @@ -700,7 +708,7 @@ private: }; }; -} // namespace SketcherGui +} enum class GeoFilterType { NormalGeos,