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

Reply via email to