Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeverin <eiseljulian@gmail.com>2018-07-02 03:09:32 +0300
committerSeverin <eiseljulian@gmail.com>2018-07-02 03:09:32 +0300
commit9b2a4c67656ebc40a1026dd0e5f59b40446a5a1a (patch)
tree20f67afbae2136e799b537972aed51baa8e5f05e
parentedca1e3dbf71f8434416d972c6b11facda54b6aa (diff)
Fix error in reordering after new items were added.
-rw-r--r--source/blender/editors/interface/interface_templates.c8
1 files changed, 7 insertions, 1 deletions
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);