Preferences: add handler for loading factory preferences
authorCampbell Barton <ideasman42@gmail.com>
Wed, 22 May 2019 04:28:10 +0000 (14:28 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 22 May 2019 04:28:10 +0000 (14:28 +1000)
Allows app-templates to define their own adjustments to preferences.
This matches `load_factory_startup_post`, use when loading preferences.

source/blender/blenlib/BLI_callbacks.h
source/blender/python/intern/bpy_app_handlers.c
source/blender/windowmanager/intern/wm_files.c

index ed8af49..4d9fc66 100644 (file)
@@ -52,6 +52,7 @@ typedef enum {
   BLI_CB_EVT_DEPSGRAPH_UPDATE_PRE,
   BLI_CB_EVT_DEPSGRAPH_UPDATE_POST,
   BLI_CB_EVT_VERSION_UPDATE,
+  BLI_CB_EVT_LOAD_FACTORY_USERDEF_POST,
   BLI_CB_EVT_LOAD_FACTORY_STARTUP_POST,
   BLI_CB_EVT_TOT,
 } eCbEvent;
index 7134bf5..dde3d02 100644 (file)
@@ -61,6 +61,7 @@ static PyStructSequence_Field app_cb_info_fields[] = {
     {(char *)"depsgraph_update_pre", (char *)"on depsgraph update (pre)"},
     {(char *)"depsgraph_update_post", (char *)"on depsgraph update (post)"},
     {(char *)"version_update", (char *)"on ending the versioning code"},
+    {(char *)"load_factory_preferences_post", (char *)"on loading factory preferences (after)"},
     {(char *)"load_factory_startup_post", (char *)"on loading factory startup (after)"},
 
 /* sets the permanent tag */
index 5294924..097db49 100644 (file)
@@ -491,7 +491,7 @@ static void wm_file_read_post(bContext *C,
                               const bool is_startup_file,
                               const bool is_factory_startup,
                               const bool use_data,
-                              const bool UNUSED(use_userdef),
+                              const bool use_userdef,
                               const bool reset_app_template)
 {
   bool addons_loaded = false;
@@ -537,15 +537,23 @@ static void wm_file_read_post(bContext *C,
 
   Main *bmain = CTX_data_main(C);
 
-  if (use_data) {
-    WM_operatortype_last_properties_clear_all();
+  if (use_userdef) {
+    if (is_factory_startup) {
+      BLI_callback_exec(bmain, NULL, BLI_CB_EVT_LOAD_FACTORY_USERDEF_POST);
+    }
+  }
 
+  if (use_data) {
     /* important to do before NULL'ing the context */
     BLI_callback_exec(bmain, NULL, BLI_CB_EVT_VERSION_UPDATE);
     BLI_callback_exec(bmain, NULL, BLI_CB_EVT_LOAD_POST);
     if (is_factory_startup) {
       BLI_callback_exec(bmain, NULL, BLI_CB_EVT_LOAD_FACTORY_STARTUP_POST);
     }
+  }
+
+  if (use_data) {
+    WM_operatortype_last_properties_clear_all();
 
     /* After load post, so for example the driver namespace can be filled
      * before evaluating the depsgraph. */