[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