Fix T48388: Undo history sculpt mode not visible
authorCampbell Barton <ideasman42@gmail.com>
Mon, 9 May 2016 16:42:14 +0000 (02:42 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Mon, 9 May 2016 16:42:14 +0000 (02:42 +1000)
source/blender/editors/util/undo.c

index fe9fd1cd3ba5c978bc0c5dc2c834ef4cf930698f..ee6700666c04be9493e235abbbefb3e8ef8c50e2 100644 (file)
@@ -436,7 +436,8 @@ enum {
        UNDOSYSTEM_GLOBAL   = 1,
        UNDOSYSTEM_EDITMODE = 2,
        UNDOSYSTEM_PARTICLE = 3,
-       UNDOSYSTEM_IMAPAINT = 4
+       UNDOSYSTEM_IMAPAINT = 4,
+       UNDOSYSTEM_SCULPT   = 5,
 };
 
 static int get_undo_system(bContext *C)
@@ -468,6 +469,10 @@ static int get_undo_system(bContext *C)
                                if (!ED_undo_paint_empty(UNDO_PAINT_IMAGE))
                                        return UNDOSYSTEM_IMAPAINT;
                        }
+                       else if (obact->mode & OB_MODE_SCULPT) {
+                               if (!ED_undo_paint_empty(UNDO_PAINT_MESH))
+                                       return UNDOSYSTEM_SCULPT;
+                       }
                }
                if (U.uiflag & USER_GLOBALUNDO)
                        return UNDOSYSTEM_GLOBAL;
@@ -495,6 +500,9 @@ static EnumPropertyItem *rna_undo_itemf(bContext *C, int undosys, int *totitem)
                else if (undosys == UNDOSYSTEM_IMAPAINT) {
                        name = ED_undo_paint_get_name(C, UNDO_PAINT_IMAGE, i, &active);
                }
+               else if (undosys == UNDOSYSTEM_SCULPT) {
+                       name = ED_undo_paint_get_name(C, UNDO_PAINT_MESH, i, &active);
+               }
                else {
                        name = BKE_undo_get_name(i, &active);
                }
@@ -576,6 +584,9 @@ static int undo_history_exec(bContext *C, wmOperator *op)
                else if (undosys == UNDOSYSTEM_IMAPAINT) {
                        ED_undo_paint_step_num(C, UNDO_PAINT_IMAGE, item);
                }
+               else if (undosys == UNDOSYSTEM_SCULPT) {
+                       ED_undo_paint_step_num(C, UNDO_PAINT_MESH, item);
+               }
                else {
                        ED_viewport_render_kill_jobs(CTX_wm_manager(C), CTX_data_main(C), true);
                        BKE_undo_number(C, item);