diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-05-10 08:57:23 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-05-10 11:27:02 +0300 |
commit | b95b6b796695a8b82cda9898561de9e89021596f (patch) | |
tree | 0f23158ccc870ac810bd33796809f321b15b6e74 | |
parent | b607d1629251dcf1f1964cfddbc9d121863d5ca1 (diff) |
Preferences: add is_dirty member
Tag preferences as dirty when changed (prepare for adding auto-save).
-rw-r--r-- | source/blender/blenkernel/intern/blendfile.c | 3 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_handlers.c | 5 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_userdef_types.h | 8 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_userdef.c | 5 |
4 files changed, 20 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/blendfile.c b/source/blender/blenkernel/intern/blendfile.c index f54d938c0ca..fdf535ba1ab 100644 --- a/source/blender/blenkernel/intern/blendfile.c +++ b/source/blender/blenkernel/intern/blendfile.c @@ -617,6 +617,9 @@ bool BKE_blendfile_userdef_write_all(ReportList *reports) } } + if (ok) { + U.runtime.is_dirty = false; + } return ok; } diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 111dfe01319..fe70509d4c2 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -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 */ diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index 3ceba714c37..3d0bdee0cab 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -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 */ diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index c36c10fd4b3..ccfeb8441bd 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -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); } |