[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