Fix T37688: User Preferences do not load correctly
Issue was caused by from_memory=true passing to wm_homefile_read in case there's a configuration folder for current blender. But the thing is, we still might fallback to reading home file from memory (i.e. in cases there's no startup.blend in config folder). In this case we still need to run versioning code for userprefs.
This commit is contained in:
parent
4838a60b0c
commit
68d39a262c
Notes:
blender-bot
2023-02-14 11:31:07 +01:00
Referenced by commit 3f82e829e5
, Correction to fix of T37688
Referenced by issue #37688, User Preferences do not load correctly
|
@ -526,6 +526,17 @@ int wm_homefile_read(bContext *C, ReportList *reports, bool from_memory, const c
|
|||
char prefstr[FILE_MAX];
|
||||
int success = 0;
|
||||
|
||||
/* Indicates whether file was really load from memory.
|
||||
*
|
||||
* This is used for versioning code, and for this we can not rely on from_memory
|
||||
* passed via argument. This is because there might be configuration folder
|
||||
* exists but it might not have startup.blend and in this case we fallback to
|
||||
* reading home file from memory.
|
||||
*
|
||||
* And in this case versioning code is to be run.
|
||||
*/
|
||||
bool read_file_from_memory = false;
|
||||
|
||||
/* options exclude eachother */
|
||||
BLI_assert((from_memory && custom_file) == 0);
|
||||
|
||||
|
@ -578,6 +589,7 @@ int wm_homefile_read(bContext *C, ReportList *reports, bool from_memory, const c
|
|||
}
|
||||
|
||||
if (success == 0) {
|
||||
read_file_from_memory = true;
|
||||
success = BKE_read_file_from_memory(C, datatoc_startup_blend, datatoc_startup_blend_size, NULL, true);
|
||||
if (wmbase.first == NULL) wm_clear_default_size(C);
|
||||
BLI_init_temporary_dir(U.tempdir);
|
||||
|
@ -600,7 +612,7 @@ int wm_homefile_read(bContext *C, ReportList *reports, bool from_memory, const c
|
|||
G.fileflags &= ~G_FILE_RELATIVE_REMAP;
|
||||
|
||||
/* check userdef before open window, keymaps etc */
|
||||
wm_init_userdef(C, (bool)from_memory);
|
||||
wm_init_userdef(C, read_file_from_memory);
|
||||
|
||||
/* match the read WM with current WM */
|
||||
wm_window_match_do(C, &wmbase);
|
||||
|
|
Loading…
Reference in New Issue