Preferences: add is_dirty member

Tag preferences as dirty when changed (prepare for adding auto-save).
This commit is contained in:
2019-05-10 15:57:23 +10:00
parent b607d16292
commit b95b6b7966
4 changed files with 20 additions and 1 deletions

View File

@@ -617,6 +617,9 @@ bool BKE_blendfile_userdef_write_all(ReportList *reports)
}
}
if (ok) {
U.runtime.is_dirty = false;
}
return ok;
}

View File

@@ -7566,6 +7566,11 @@ static void button_activate_exit(
if (block->flag & UI_BLOCK_POPUP_MEMORY) {
ui_popup_menu_memory_set(block, but);
}
/* Not very elegant, but ensures preference changes force re-save. */
if (but->rnaprop && (but->rnapoin.data == &U)) {
U.runtime.is_dirty = true;
}
}
/* disable tooltips until mousemove + last active flag */

View File

@@ -537,6 +537,11 @@ typedef struct WalkNavigation {
char _pad0[6];
} WalkNavigation;
typedef struct UserDef_Runtime {
char is_dirty;
char _pad0[7];
} UserDef_Runtime;
typedef struct UserDef {
/* UserDef has separate do-version handling, and can be read from other files */
int versionfile, subversionfile;
@@ -767,6 +772,9 @@ typedef struct UserDef {
char viewport_aa;
char _pad5[2];
/** Runtime data (keep last). */
UserDef_Runtime runtime;
} UserDef;
/* from blenkernel blender.c */

View File

@@ -184,8 +184,11 @@ static void rna_userdef_version_get(PointerRNA *ptr, int *value)
value[2] = userdef->subversionfile;
}
static void rna_userdef_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *UNUSED(ptr))
static void rna_userdef_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
{
UserDef *userdef = (UserDef *)ptr->data;
userdef->runtime.is_dirty = true;
WM_main_add_notifier(NC_WINDOW, NULL);
}