[Bf-blender-cvs] [0dfe6a6a372] soc-2020-custom-menus: Custom Menus : fix idname change when name change on keymap

TempoDev noreply at git.blender.org
Sun Aug 23 13:22:48 CEST 2020


Commit: 0dfe6a6a372f3076b8e73328c4c14da3f6d9d718
Author: TempoDev
Date:   Sun Aug 23 13:21:14 2020 +0200
Branches: soc-2020-custom-menus
https://developer.blender.org/rB0dfe6a6a372f3076b8e73328c4c14da3f6d9d718

Custom Menus : fix idname change when name change on keymap

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

M	source/blender/blenkernel/BKE_blender_user_menu.h
M	source/blender/blenkernel/intern/blender_user_menu.c
M	source/blender/blenkernel/intern/blendfile.c
M	source/blender/blenloader/intern/readfile.c
M	source/blender/makesrna/intern/rna_userdef.c

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

diff --git a/source/blender/blenkernel/BKE_blender_user_menu.h b/source/blender/blenkernel/BKE_blender_user_menu.h
index e4eddd69ca2..dd42d45fd67 100644
--- a/source/blender/blenkernel/BKE_blender_user_menu.h
+++ b/source/blender/blenkernel/BKE_blender_user_menu.h
@@ -27,12 +27,14 @@ extern "C" {
 struct ListBase;
 struct bUserMenu;
 struct bUserMenuItem;
+struct wmWindowManager;
 
 void BKE_blender_user_menu_free_list(struct ListBase *lb);
 void BKE_blender_user_menus_group_idname_update(struct bUserMenusGroup *umg);
 void BKE_blender_user_menus_group_idname_update_keymap(struct wmWindowManager *wm,
                                                        const char *old,
                                                        const char *new);
+struct bUserMenusGroup *BKE_blender_user_menus_group_new(const char *name);
 struct bUserMenusGroup *BKE_blender_user_menus_group_find(struct ListBase *lb, const char *idname);
 struct bUserMenu *BKE_blender_user_menu_find(struct ListBase *lb,
                                              char space_type,
@@ -44,6 +46,7 @@ struct bUserMenu *BKE_blender_user_menu_ensure(struct ListBase *lb,
 struct bUserMenuItem *BKE_blender_user_menu_item_add(struct ListBase *lb, int type);
 void BKE_blender_user_menu_item_free(struct bUserMenuItem *umi);
 void BKE_blender_user_menu_item_free_list(struct ListBase *lb);
+struct bUserMenusGroup *BKU_blender_user_menu_default(void);
 
 #ifdef __cplusplus
 }
diff --git a/source/blender/blenkernel/intern/blender_user_menu.c b/source/blender/blenkernel/intern/blender_user_menu.c
index 32ad2c8775b..c71364a6c53 100644
--- a/source/blender/blenkernel/intern/blender_user_menu.c
+++ b/source/blender/blenkernel/intern/blender_user_menu.c
@@ -81,8 +81,8 @@ void BKE_blender_user_menus_group_idname_update(bUserMenusGroup *umg)
 }
 
 void BKE_blender_user_menus_group_idname_update_keymap(wmWindowManager *wm,
-                                                       const char *UNUSED(old),
-                                                       const char *UNUSED(new))
+                                                       const char *old,
+                                                       const char *new)
 {
   wmKeyConfig *kc;
   wmKeyMap *km;
@@ -94,12 +94,27 @@ void BKE_blender_user_menus_group_idname_update_keymap(wmWindowManager *wm,
         if (STREQ(kmi->idname, "WM_OT_call_user_menu")) {
           IDProperty *idp = IDP_GetPropertyFromGroup(kmi->properties, "name");
           char *index = IDP_String(idp);
+          if (STREQ(kmi->idname, old)) {
+            IDP_AssignString(idp, new, 64);
+          }
         }
       }
     }
   }
 }
 
+bUserMenusGroup *BKE_blender_user_menus_group_new(const char *name)
+{
+  bUserMenusGroup *umg = MEM_mallocN(sizeof(*umg), __func__);
+  STRNCPY(umg->name, name);
+  umg->type = 0;
+  umg->prev = NULL;
+  umg->next = NULL;
+  BLI_listbase_clear(&umg->menus);
+  BKE_blender_user_menus_group_idname_update(umg);
+  return umg;
+}
+
 /** \} */
 
 /* -------------------------------------------------------------------- */
@@ -191,3 +206,19 @@ void BKE_blender_user_menu_item_free_list(ListBase *lb)
   }
   BLI_listbase_clear(lb);
 }
+
+/* -------------------------------------------------------------------- */
+/** \name Default Menu
+ * \{ */
+
+bUserMenusGroup *BKU_blender_user_menu_default(void)
+{
+  bUserMenusGroup *umg = MEM_mallocN(sizeof(*umg), __func__);
+  STRNCPY(umg->name, "Quick Favorites");
+  STRNCPY(umg->idname, "QUICK_FAVORITES");
+  umg->type = 0;
+  umg->prev = NULL;
+  umg->next = NULL;
+  BLI_listbase_clear(&umg->menus);
+  return umg;
+}
\ No newline at end of file
diff --git a/source/blender/blenkernel/intern/blendfile.c b/source/blender/blenkernel/intern/blendfile.c
index e54e0b2d440..0decce25e3a 100644
--- a/source/blender/blenkernel/intern/blendfile.c
+++ b/source/blender/blenkernel/intern/blendfile.c
@@ -57,6 +57,7 @@
 #include "BKE_screen.h"
 #include "BKE_studiolight.h"
 #include "BKE_workspace.h"
+#include "BKE_blender_user_menu.h"
 
 #include "BLO_readfile.h"
 #include "BLO_writefile.h"
@@ -616,13 +617,7 @@ UserDef *BKE_blendfile_userdef_from_defaults(void)
 
   /* default user menus. */
   {
-    bUserMenusGroup *umg = MEM_mallocN(sizeof(*umg), __func__);
-    STRNCPY(umg->name, "Quick Favorites");
-    STRNCPY(umg->idname, "QUICK_FAVORITES");
-    umg->type = 0;
-    umg->prev = NULL;
-    umg->next = NULL;
-    BLI_listbase_clear(&umg->menus);
+    bUserMenusGroup *umg = BKU_blender_user_menu_default();
     BLI_addtail(&userdef->user_menus_group, umg);
     userdef->runtime.umg_select = umg;
   }
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 7ae03319c78..743d2faec88 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -9847,12 +9847,7 @@ static BHead *read_userdef(BlendFileData *bfd, FileData *fd, BHead *bhead)
   }
 
   if (user->user_menus.first != NULL && user->user_menus_group.first == NULL) {
-    bUserMenusGroup *umg = MEM_mallocN(sizeof(*umg), __func__);
-    STRNCPY(umg->name, "Quick Favorites");
-    STRNCPY(umg->idname, "QUICK_FAVORITES");
-    umg->type = 0;
-    umg->prev = NULL;
-    umg->next = NULL;
+    bUserMenusGroup *umg = BKU_blender_user_menu_default();
     BLI_addtail(&user->user_menus_group, umg);
     user->runtime.umg_select = umg;
     umg->menus = user->user_menus;
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index 5f7b40ee891..acb7994a9cc 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -1152,11 +1152,7 @@ static void rna_UserDef_usermenus_set_group(UserDef *userdef, bUserMenusGroup *u
 
 static void rna_UserDef_usermenus_add_group(UserDef *userdef)
 {
-  bUserMenusGroup *umg = MEM_mallocN(sizeof(*umg), __func__);
-  STRNCPY(umg->name, "new menu");
-  BKE_blender_user_menus_group_idname_update(umg);
-  umg->type = false;
-  BLI_listbase_clear(&umg->menus);
+  bUserMenusGroup *umg = BKE_blender_user_menus_group_new("new menu");
   BLI_addtail(&userdef->user_menus_group, umg);
   userdef->runtime.umg_select = umg;
 }



More information about the Bf-blender-cvs mailing list