Commit: fd2d7e7a48557441eda7a98b1087c973a83287ef
Author: TempoDev
Date: Sun Aug 23 11:13:44 2020 +0200
Branches: soc-2020-custom-menus
https://developer.blender.org/rBfd2d7e7a48557441eda7a98b1087c973a83287ef
Custom Menus : fix version incompatibility
===================================================================
M release/datafiles/userdef/userdef_default.c
M source/blender/blenkernel/intern/blender.c
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/blenloader/intern/writefile.c
M source/blender/editors/screen/screen_user_menu.c
M source/blender/makesdna/DNA_userdef_types.h
M source/blender/makesrna/intern/rna_userdef.c
===================================================================
diff --git a/release/datafiles/userdef/userdef_default.c
b/release/datafiles/userdef/userdef_default.c
index eb737cbe71d..6dde3f3e6fa 100644
--- a/release/datafiles/userdef/userdef_default.c
+++ b/release/datafiles/userdef/userdef_default.c
@@ -105,6 +105,7 @@ const UserDef U_default = {
.autoexec_paths = {NULL},
.user_menus = {NULL},
+ .user_menus_group = {NULL},
.keyconfigstr = "blender",
.undosteps = 32,
diff --git a/source/blender/blenkernel/intern/blender.c
b/source/blender/blenkernel/intern/blender.c
index c00d6706ef9..544a177ae72 100644
--- a/source/blender/blenkernel/intern/blender.c
+++ b/source/blender/blenkernel/intern/blender.c
@@ -232,7 +232,7 @@ static void userdef_free_keyconfig_prefs(UserDef *userdef)
static void userdef_free_user_menus(UserDef *userdef)
{
- for (bUserMenusGroup *umg = userdef->user_menus.first, *umg_next; umg; umg =
umg_next) {
+ for (bUserMenusGroup *umg = userdef->user_menus_group.first, *umg_next; umg;
umg = umg_next) {
umg_next = umg->next;
for (bUserMenu *um = umg->menus.first, *um_next; um; um = um_next) {
um_next = um->next;
diff --git a/source/blender/blenkernel/intern/blender_user_menu.c
b/source/blender/blenkernel/intern/blender_user_menu.c
index c70bc5e47e4..32ad2c8775b 100644
--- a/source/blender/blenkernel/intern/blender_user_menu.c
+++ b/source/blender/blenkernel/intern/blender_user_menu.c
@@ -72,7 +72,7 @@ void
BKE_blender_user_menus_group_idname_update(bUserMenusGroup *umg)
name[i] += 'A' - 'a';
}
STRNCPY(umg->idname, name);
- BLI_uniquename(&U.user_menus,
+ BLI_uniquename(&U.user_menus_group,
umg,
umg->idname,
'_',
diff --git a/source/blender/blenkernel/intern/blendfile.c
b/source/blender/blenkernel/intern/blendfile.c
index 96fb8a689dd..e54e0b2d440 100644
--- a/source/blender/blenkernel/intern/blendfile.c
+++ b/source/blender/blenkernel/intern/blendfile.c
@@ -623,7 +623,7 @@ UserDef *BKE_blendfile_userdef_from_defaults(void)
umg->prev = NULL;
umg->next = NULL;
BLI_listbase_clear(&umg->menus);
- BLI_addtail(&userdef->user_menus, umg);
+ 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 fb5ff800c9e..7ae03319c78 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -9795,6 +9795,7 @@ static BHead *read_userdef(BlendFileData *bfd, FileData
*fd, BHead *bhead)
BLO_read_list(reader, &user->user_menus);
BLO_read_list(reader, &user->addons);
BLO_read_list(reader, &user->autoexec_paths);
+ BLO_read_list(reader, &user->user_menus_group);
for (keymap = user->user_keymaps.first; keymap; keymap = keymap->next) {
keymap->modal_items = NULL;
@@ -9826,7 +9827,17 @@ static BHead *read_userdef(BlendFileData *bfd, FileData
*fd, BHead *bhead)
IDP_DirectLinkGroup_OrFree(&kpt->prop, reader);
}
- LISTBASE_FOREACH (bUserMenusGroup *, umg, &user->user_menus) {
+ LISTBASE_FOREACH (bUserMenu *, um, &user->user_menus) {
+ BLO_read_list(reader, &um->items);
+ read_usermenuitems(reader, &um->items, NULL);
+ }
+
+ for (addon = user->addons.first; addon; addon = addon->next) {
+ BLO_read_data_address(reader, &addon->prop);
+ IDP_DirectLinkGroup_OrFree(&addon->prop, reader);
+ }
+
+ LISTBASE_FOREACH (bUserMenusGroup *, umg, &user->user_menus_group) {
BLO_read_list(reader, &umg->menus);
BKE_blender_user_menus_group_idname_update(umg);
LISTBASE_FOREACH (bUserMenu *, um, &umg->menus) {
@@ -9835,9 +9846,17 @@ static BHead *read_userdef(BlendFileData *bfd, FileData
*fd, BHead *bhead)
}
}
- for (addon = user->addons.first; addon; addon = addon->next) {
- BLO_read_data_address(reader, &addon->prop);
- IDP_DirectLinkGroup_OrFree(&addon->prop, reader);
+ 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;
+ BLI_addtail(&user->user_menus_group, umg);
+ user->runtime.umg_select = umg;
+ umg->menus = user->user_menus;
+ BLI_listbase_clear(&user->user_menus);
}
// XXX
@@ -9854,7 +9873,7 @@ static BHead *read_userdef(BlendFileData *bfd, FileData
*fd, BHead *bhead)
user->runtime.um_space_select = 1;
user->runtime.um_context_select = 1;
user->runtime.um_item_select = NULL;
- user->runtime.umg_select = user->user_menus.first;
+ user->runtime.umg_select = user->user_menus_group.first;
/* free fd->datamap again */
oldnewmap_clear(fd->datamap);
diff --git a/source/blender/blenloader/intern/writefile.c
b/source/blender/blenloader/intern/writefile.c
index 31bd100334a..e0bc81baaf9 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -1296,14 +1296,6 @@ static void write_userdef(BlendWriter *writer, const
UserDef *userdef)
}
}
- LISTBASE_FOREACH (const bUserMenusGroup *, umg, &userdef->user_menus) {
- BLO_write_struct(writer, bUserMenusGroup, umg);
- LISTBASE_FOREACH (const bUserMenu *, um, &umg->menus) {
- BLO_write_struct(writer, bUserMenu, um);
- write_usermenuitems(writer, &um->items);
- }
- }
-
LISTBASE_FOREACH (const bAddon *, bext, &userdef->addons) {
BLO_write_struct(writer, bAddon, bext);
if (bext->prop) {
@@ -1315,6 +1307,14 @@ static void write_userdef(BlendWriter *writer, const
UserDef *userdef)
BLO_write_struct(writer, bPathCompare, path_cmp);
}
+ LISTBASE_FOREACH (const bUserMenusGroup *, umg, &userdef->user_menus_group) {
+ BLO_write_struct(writer, bUserMenusGroup, umg);
+ LISTBASE_FOREACH (const bUserMenu *, um, &umg->menus) {
+ BLO_write_struct(writer, bUserMenu, um);
+ write_usermenuitems(writer, &um->items);
+ }
+ }
+
LISTBASE_FOREACH (const uiStyle *, style, &userdef->uistyles) {
BLO_write_struct(writer, uiStyle, style);
}
diff --git a/source/blender/editors/screen/screen_user_menu.c
b/source/blender/editors/screen/screen_user_menu.c
index ead17156f9c..4ae15a8dce1 100644
--- a/source/blender/editors/screen/screen_user_menu.c
+++ b/source/blender/editors/screen/screen_user_menu.c
@@ -73,7 +73,7 @@ static const char *screen_menu_context_string(const bContext
*C, const SpaceLink
bUserMenusGroup *ED_screen_user_menus_group_find(int id)
{
int index = 0;
- LISTBASE_FOREACH (bUserMenusGroup *, umg, &U.user_menus) {
+ LISTBASE_FOREACH (bUserMenusGroup *, umg, &U.user_menus_group) {
if (index == id)
return umg;
index++;
diff --git a/source/blender/makesdna/DNA_userdef_types.h
b/source/blender/makesdna/DNA_userdef_types.h
index 99d2c4565db..db1214ec976 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -752,8 +752,10 @@ typedef struct UserDef {
struct ListBase user_keyconfig_prefs;
struct ListBase addons;
struct ListBase autoexec_paths;
- /** #bUserMenusGroups. */
+ /** #bUserMenu : deprecated, keep for compatibility. */
struct ListBase user_menus;
+ /** #bUserMenuGroups. */
+ struct ListBase user_menus_group;
char keyconfigstr[64];
diff --git a/source/blender/makesrna/intern/rna_userdef.c
b/source/blender/makesrna/intern/rna_userdef.c
index 5104bbb8af7..5f7b40ee891 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -1083,7 +1083,7 @@ static bUserMenu
*rna_UserDef_usermenus_get_current(UserDef *userdef, bool ensur
{
const char **contexts_list = CTX_data_list_mode_string();
# if 0 /* UNUSED */
- ListBase *umg_list = &userdef->user_menus;
+ ListBase *umg_list = &userdef->user_menus_group;
# endif
bUserMenusGroup *umg = userdef->runtime.umg_select;
@@ -1142,7 +1142,7 @@ static bUserMenu
*rna_UserDef_usermenus_get_current(UserDef *userdef, bool ensur
static bUserMenusGroup *rna_UserDef_usermenus_get_group(UserDef *userdef,
const char *idname)
{
- return BKE_blender_user_menus_group_find(&userdef->user_menus, idname);
+ return BKE_blender_user_menus_group_find(&userdef->user_menus_group, idname);
}
static void rna_UserDef_usermenus_set_group(UserDef *userdef, bUserMenusGroup
*umg)
@@ -1157,7 +1157,7 @@ static void rna_UserDef_usermenus_add_group(UserDef
*userdef)
BKE_blender_user_menus_group_idname_update(umg);
umg->type = false;
BLI_listbase_clear(&umg->menus);
- BLI_addtail(&userdef->user_menus, umg);
+ BLI_addtail(&userdef->user_menus_group, umg);
userdef->runtime.umg_select = umg;
}
@@ -1173,7 +1173,7 @@ static void rna_UserDef_usermenus_remove_group(UserDef
*userdef)
}
}
- BLI_remlink(&userdef->user_menus, umg);
+ BLI_remlink(&userdef->user_menus_group, umg);
BKE_blender_user_menu_free_list(&umg->menus);
MEM_freeN(umg);
}
@@ -1652,7 +1652,7 @@ static bUserMenuItem_SubMenu
*rna_UserDef_usermenus_item_submenu_get(bUserMenuIt
static void rna_UserDef_usermenu_menus_begin(CollectionPropertyIterator *iter,
PointerRNA *ptr)
{
UserDef *userdef = (UserDef *)ptr->data;
- rna_iterator_listbase_begin(iter, &userdef->user_menus, NULL);
+ rna_iterator_listbase_begin(iter, &userdef->user_menus_group, NULL);
}
int rna_show_statusbar_vram_editable(struct PointerRNA *UNUSED(ptr), const
char **UNUSED(r_info))
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs