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.
This commit is contained in:
Abdullah Tahiri
2023-03-18 06:49:23 +01:00
committed by abdullahtahiriyo
parent 5242f6d048
commit 3f19bcbeef

View File

@@ -41,6 +41,7 @@
#include <Gui/Application.h>
#include <Gui/BitmapFactory.h>
#include <Gui/Command.h>
#include <Gui/Notifications.h>
#include <Gui/Selection.h>
#include <Gui/SelectionObject.h>
#include <Gui/ViewProvider.h>
@@ -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,