From e47b9a9638e59eac7992ebc92cce3b8ce030f6fd Mon Sep 17 00:00:00 2001 From: Christophe Bourcier Date: Fri, 7 Apr 2023 10:38:05 +0200 Subject: [PATCH] Partial fix #34401 Allows to move to the end GroupSubstraction GroupAddition GroupIntersection by the graphic interface --- src/XGUI/XGUI_Workshop.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) 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 -- 2.39.2