Commit: b95b6b796695a8b82cda9898561de9e89021596f
Author: Campbell Barton
Date:   Fri May 10 15:57:23 2019 +1000
Branches: master
https://developer.blender.org/rBb95b6b796695a8b82cda9898561de9e89021596f

Preferences: add is_dirty member

Tag preferences as dirty when changed (prepare for adding auto-save).

===================================================================

M       source/blender/blenkernel/intern/blendfile.c
M       source/blender/editors/interface/interface_handlers.c
M       source/blender/makesdna/DNA_userdef_types.h
M       source/blender/makesrna/intern/rna_userdef.c

===================================================================

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);
 }

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to