Merge branch 'master' into blender2.8
authorCampbell Barton <ideasman42@gmail.com>
Thu, 12 Jul 2018 12:46:48 +0000 (14:46 +0200)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 12 Jul 2018 12:46:48 +0000 (14:46 +0200)
source/blender/blenlib/BLI_callbacks.h
source/blender/editors/undo/ed_undo.c
source/blender/makesrna/intern/rna_color.c
source/blender/python/intern/bpy_app_handlers.c

index c913510bda3981c55f79578cd8cd312c23ec7c1a..f53a4b385b4c944bf4cbca94fca3375c6c8131d7 100644 (file)
@@ -49,6 +49,10 @@ typedef enum {
        BLI_CB_EVT_LOAD_POST,
        BLI_CB_EVT_SAVE_PRE,
        BLI_CB_EVT_SAVE_POST,
+       BLI_CB_EVT_UNDO_PRE,
+       BLI_CB_EVT_UNDO_POST,
+       BLI_CB_EVT_REDO_PRE,
+       BLI_CB_EVT_REDO_POST,
        BLI_CB_EVT_VERSION_UPDATE,
        BLI_CB_EVT_TOT
 } eCbEvent;
index c090414bc227f25750724bca745a036fd36ad5a5..7bbb2479a52886d6d8f4b56509ac2a069a1d0bcc 100644 (file)
@@ -39,6 +39,8 @@
 #include "DNA_object_types.h"
 
 #include "BLI_utildefines.h"
+#include "BLI_callbacks.h"
+#include "BLI_listbase.h"
 
 #include "BLT_translation.h"
 
@@ -121,17 +123,50 @@ static int ed_undo_step(bContext *C, int step, const char *undoname)
                return ED_undo_gpencil_step(C, step, undoname);
        }
 
+       UndoStep *step_data_from_name = NULL;
+       int step_for_callback = step;
+       if (undoname != NULL) {
+               step_data_from_name = BKE_undosys_step_find_by_name(wm->undo_stack, undoname);
+               if (step_data_from_name == NULL) {
+                       return OPERATOR_CANCELLED;
+               }
+
+               /* TODO(campbell), could use simple optimization. */
+               BLI_assert(step_data_from_name != wm->undo_stack->step_active);
+               step_for_callback = (
+                       BLI_findindex(&wm->undo_stack->steps, step_data_from_name) <
+                       BLI_findindex(&wm->undo_stack->steps, wm->undo_stack->step_active)) ? 1 : -1;
+       }
+
+       /* App-Handlers (pre). */
+       {
+               /* Note: ignore grease pencil for now. */
+               Main *bmain = CTX_data_main(C);
+               wm->op_undo_depth++;
+               BLI_callback_exec(bmain, &scene->id, (step_for_callback > 0) ? BLI_CB_EVT_UNDO_PRE : BLI_CB_EVT_REDO_PRE);
+               wm->op_undo_depth--;
+       }
+
+
        /* Undo System */
        {
                if (undoname) {
-                       UndoStep *step_data = BKE_undosys_step_find_by_name(wm->undo_stack, undoname);
-                       BKE_undosys_step_undo_with_data(wm->undo_stack, C, step_data);
+                       BKE_undosys_step_undo_with_data(wm->undo_stack, C, step_data_from_name);
                }
                else {
                        BKE_undosys_step_undo_compat_only(wm->undo_stack, C, step);
                }
        }
 
+       /* App-Handlers (post). */
+       {
+               Main *bmain = CTX_data_main(C);
+               scene = CTX_data_scene(C);
+               wm->op_undo_depth++;
+               BLI_callback_exec(bmain, &scene->id, step_for_callback > 0 ? BLI_CB_EVT_UNDO_PRE : BLI_CB_EVT_REDO_PRE);
+               wm->op_undo_depth--;
+       }
+
        WM_event_add_notifier(C, NC_WINDOW, NULL);
        WM_event_add_notifier(C, NC_WM | ND_UNDO, NULL);
 
index 9b0654092011544983f8925f726182f643050488..083551f236748d16b7bfa16dad8372bf68c895c1 100644 (file)
@@ -1102,8 +1102,9 @@ static void rna_def_colormanage(BlenderRNA *brna)
 
        prop = RNA_def_property(srna, "exposure", PROP_FLOAT, PROP_FACTOR);
        RNA_def_property_float_sdna(prop, NULL, "exposure");
-       RNA_def_property_range(prop, -10.0f, 10.0f);
        RNA_def_property_float_default(prop, 0.0f);
+       RNA_def_property_range(prop, -32.0f, 32.0f);
+       RNA_def_property_ui_range(prop, -10.0f, 10.0f, 1, 3);
        RNA_def_property_ui_text(prop, "Exposure", "Exposure (stops) applied before display transform");
        RNA_def_property_update(prop, NC_WINDOW, "rna_ColorManagement_update");
 
index 948a78d579440211ca62b9c3bc1379bea118d924..72bc5bbc9102ce1c04be44d9771a9d708c31a52a 100644 (file)
@@ -59,6 +59,10 @@ static PyStructSequence_Field app_cb_info_fields[] = {
        {(char *)"load_post",         (char *)"on loading a new blend file (after)"},
        {(char *)"save_pre",          (char *)"on saving a blend file (before)"},
        {(char *)"save_post",         (char *)"on saving a blend file (after)"},
+       {(char *)"undo_pre",          (char *)"on loading an undo step (before)"},
+       {(char *)"undo_post",         (char *)"on loading an undo step (after)"},
+       {(char *)"redo_pre",          (char *)"on loading a redo step (before)"},
+       {(char *)"redo_post",         (char *)"on loading a redo step (after)"},
        {(char *)"version_update",    (char *)"on ending the versioning code"},
 
        /* sets the permanent tag */