[Bf-blender-cvs] [bf3c22ec551] soc-2020-custom-menus: Custom Menu: fix merge
TempoDev
noreply at git.blender.org
Tue Jun 23 12:38:36 CEST 2020
Commit: bf3c22ec551d590bda090101e5f20f614fa2eeb2
Author: TempoDev
Date: Tue Jun 23 12:38:28 2020 +0200
Branches: soc-2020-custom-menus
https://developer.blender.org/rBbf3c22ec551d590bda090101e5f20f614fa2eeb2
Custom Menu: fix merge
===================================================================
===================================================================
diff --cc source/blender/makesrna/intern/rna_userdef.c
index fe345650961,2d88e0bbebd..82d81d3cbd8
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@@ -1123,62 -1142,6 +1123,62 @@@ static bool rna_UserDef_usermenus_has_i
return true;
}
+static void rna_UserDef_usermenus_buttons_delete(ListBase *lb, bUserMenuItem_But *umib)
+{
+ BLI_remlink(lb, umib);
+ MEM_freeN(umib);
+}
+
+static void rna_UserDef_usermenus_buttons_free_list(ListBase *lb)
+{
- bUserMenuItem_But *umib = buttons->first;
++ bUserMenuItem_But *umib = lb->first;
+
+ if (!umib)
+ return;
+ for (bUserMenuItem_But *next_umib; umib; umib = next_umib) {
+ next_umib = umib->next;
- rna_UserDef_usermenus_buttons_delete(buttons, umib);
++ rna_UserDef_usermenus_buttons_delete(lb, umib);
+ }
+}
+
+static void rna_UserDef_usermenus_buttons_refresh(UserDef *userdef)
+{
+ ListBase *buttons = &userdef->runtime.um_buttons;
+
+ bUserMenu *um = rna_UserDef_usermenus_get_current(userdef, false);
+ if (!um) {
+ rna_UserDef_usermenus_buttons_free_list(buttons);
+ return;
+ }
+
+ ListBase *umis = &um->items;
+ int index = 0;
+ bUserMenuItem_But *umib = buttons->first;
+ for (bUserMenuItem *umi = umis->first; umi; umi = umi->next, index++) {
+ if (umib && umib->item == umi) {
+ umib->pressed = (userdef->runtime.um_item_select == umi) ? true : false;
+ umib->index = index;
+ umib = umib->next;
+ } else {
+ bUserMenuItem_But *new_umib = MEM_callocN(sizeof(bUserMenuItem_But), __func__);
+ new_umib->pressed = (userdef->runtime.um_item_select == umi) ? true : false;
+ new_umib->item = umi;
+ new_umib->index = index;
+ if (umib) {
+ BLI_insertlinkafter(buttons, umib, new_umib);
+ rna_UserDef_usermenus_buttons_delete(buttons, umib);
+ } else {
+ BLI_addtail(buttons, new_umib);
+ }
+ umib = new_umib->next;
+ }
+ }
+ for (bUserMenuItem_But *next_umib; umib; umib = next_umib) {
+ next_umib = umib->next;
+ rna_UserDef_usermenus_buttons_delete(buttons, umib);
+ }
+}
+
static int rna_UserDef_usermenus_items_length(UserDef *userdef)
{
bUserMenu *bum = rna_UserDef_usermenus_get_current(userdef, false);
More information about the Bf-blender-cvs
mailing list