[Bf-blender-cvs] [9b2a4c67656] temp-tab_drag_drop: Fix error in reordering after new items were added.

Severin noreply at git.blender.org
Mon Jul 2 14:27:08 CEST 2018


Commit: 9b2a4c67656ebc40a1026dd0e5f59b40446a5a1a
Author: Severin
Date:   Mon Jul 2 02:09:32 2018 +0200
Branches: temp-tab_drag_drop
https://developer.blender.org/rB9b2a4c67656ebc40a1026dd0e5f59b40446a5a1a

Fix error in reordering after new items were added.

===================================================================

M	source/blender/editors/interface/interface_templates.c

===================================================================

diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index 53a59a12b89..b890e8b38b0 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -197,10 +197,16 @@ static void ui_template_sortable_id_tabs(
 		group->reordered_indices = MEM_recallocN(
 		                               group->reordered_indices, sizeof(*group->reordered_indices) * group->tot_items);
 		ui_button_group_find_new_items(group, &items, old_tot_items, &new_items);
+
 		/* Add new items at the end of the list. */
-		const int tot_new_items = ABS(group->tot_items - old_tot_items);
+		const int tot_new_items = group->tot_items - old_tot_items;
+
+		BLI_assert(BLI_listbase_count(&new_items) == tot_new_items);
 		int i = 0;
 		for (uiButtonGroupItemInfo *new_item = new_items.first; new_item; new_item = new_item->next, i++) {
+			for (int j = group->tot_items - tot_new_items + i; j > new_item->position_index; j--) {
+				group->reordered_indices[j] = group->reordered_indices[j - 1];
+			}
 			group->reordered_indices[new_item->position_index] = group->tot_items - tot_new_items + i;
 		}
 		BLI_freelistN(&new_items);



More information about the Bf-blender-cvs mailing list