From: Christophe Bourcier Date: Fri, 7 Apr 2023 08:38:05 +0000 (+0200) Subject: Partial fix #34401 Allows to move to the end GroupSubstraction GroupAddition GroupInt... X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=e47b9a9638e59eac7992ebc92cce3b8ce030f6fd;p=modules%2Fshaper.git Partial fix #34401 Allows to move to the end GroupSubstraction GroupAddition GroupIntersection by the graphic interface --- diff --git a/src/XGUI/XGUI_Workshop.cpp b/src/XGUI/XGUI_Workshop.cpp index 482fcb8e8..bf693674f 100644 --- a/src/XGUI/XGUI_Workshop.cpp +++ b/src/XGUI/XGUI_Workshop.cpp @@ -2435,12 +2435,24 @@ bool XGUI_Workshop::canMoveFeature() break; } FeaturePtr aFeat = std::dynamic_pointer_cast(anObject); - // only groups can be moved to the end for now (#2451) - if (aFeat.get() && aFeat->getKind() != "Group") { - aCanMove = false; - break; + // only groups can be moved to the end for now (#2451 old_id, #23105 tuleap id) + // and groups created by other groups (#34401) + if (aFeat.get()) { + std::string aKindOfFeature = aFeat->getKind(); + if (aKindOfFeature != "Group" && + aKindOfFeature != "GroupSubstraction" && + aKindOfFeature != "GroupAddition" && + aKindOfFeature != "GroupIntersection") { + aCanMove = false; + break; + } } + // Check that the feature can be moved due to its dependencies + // i.e. Check that there are no features between the moved one and its destination + // with references to it + // Details on #21340 (old_id #660) + // 1. Get features placed between selected and current in the document std::list aFeaturesBetween = toCurrentFeatures(anObject); // if aFeaturesBetween is empty it means wrong order or anObject is the current feature