Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-05-10 08:57:23 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-05-10 11:27:02 +0300
commitb95b6b796695a8b82cda9898561de9e89021596f (patch)
tree0f23158ccc870ac810bd33796809f321b15b6e74
parentb607d1629251dcf1f1964cfddbc9d121863d5ca1 (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.c3
-rw-r--r--source/blender/editors/interface/interface_handlers.c5
-rw-r--r--source/blender/makesdna/DNA_userdef_types.h8
-rw-r--r--source/blender/makesrna/intern/rna_userdef.c5
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);
}