diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-12-03 09:42:26 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-12-03 09:42:26 +0300 |
commit | f32dfd0819fe871a3ec2efdac573c060537e7150 (patch) | |
tree | 480219662dea55ceda55bddc315183a387659f15 /source/blender/editors/sculpt_paint | |
parent | 335e1b507b1ad0e7c2bafb2175dac15d3d1add83 (diff) |
Fix T56331: Undo crash w/ sculpt on hidden layer
Diffstat (limited to 'source/blender/editors/sculpt_paint')
-rw-r--r-- | source/blender/editors/sculpt_paint/sculpt.c | 2 | ||||
-rw-r--r-- | source/blender/editors/sculpt_paint/sculpt_undo.c | 18 |
2 files changed, 12 insertions, 8 deletions
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 80e9aef4a40..309a7aa2102 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -5789,7 +5789,7 @@ static int sculpt_mode_toggle_exec(bContext *C, wmOperator *op) { Main *bmain = CTX_data_main(C); Scene *scene = CTX_data_scene(C); - Object *ob = CTX_data_active_object(C); + Object *ob = OBACT; const int mode_flag = OB_MODE_SCULPT; const bool is_mode_set = (ob->mode & mode_flag) != 0; diff --git a/source/blender/editors/sculpt_paint/sculpt_undo.c b/source/blender/editors/sculpt_paint/sculpt_undo.c index 62e548f661c..aab3e009a9d 100644 --- a/source/blender/editors/sculpt_paint/sculpt_undo.c +++ b/source/blender/editors/sculpt_paint/sculpt_undo.c @@ -138,8 +138,8 @@ static bool sculpt_undo_restore_deformed( static bool sculpt_undo_restore_coords(bContext *C, DerivedMesh *dm, SculptUndoNode *unode) { Scene *scene = CTX_data_scene(C); - Sculpt *sd = CTX_data_tool_settings(C)->sculpt; - Object *ob = CTX_data_active_object(C); + Object *ob = OBACT; + Sculpt *sd = scene->toolsettings->sculpt; SculptSession *ss = ob->sculpt; MVert *mvert; int *index; @@ -254,7 +254,8 @@ static bool sculpt_undo_restore_hidden( bContext *C, DerivedMesh *dm, SculptUndoNode *unode) { - Object *ob = CTX_data_active_object(C); + Scene *scene = CTX_data_scene(C); + Object *ob = OBACT; SculptSession *ss = ob->sculpt; int i; @@ -286,7 +287,8 @@ static bool sculpt_undo_restore_hidden( static bool sculpt_undo_restore_mask(bContext *C, DerivedMesh *dm, SculptUndoNode *unode) { - Object *ob = CTX_data_active_object(C); + Scene *scene = CTX_data_scene(C); + Object *ob = OBACT; SculptSession *ss = ob->sculpt; MVert *mvert; float *vmask; @@ -471,7 +473,7 @@ static void sculpt_undo_restore_list(bContext *C, ListBase *lb) { Scene *scene = CTX_data_scene(C); Sculpt *sd = CTX_data_tool_settings(C)->sculpt; - Object *ob = CTX_data_active_object(C); + Object *ob = OBACT; DerivedMesh *dm; SculptSession *ss = ob->sculpt; SculptUndoNode *unode; @@ -637,7 +639,8 @@ static void sculpt_undo_free_list(ListBase *lb) #if 0 static bool sculpt_undo_cleanup(bContext *C, ListBase *lb) { - Object *ob = CTX_data_active_object(C); + Scene *scene = CTX_data_scene(C); + Object *ob = OBACT; SculptUndoNode *unode; unode = lb->first; @@ -1015,7 +1018,8 @@ static bool sculpt_undosys_poll(bContext *C) { ScrArea *sa = CTX_wm_area(C); if (sa && (sa->spacetype == SPACE_VIEW3D)) { - Object *obact = CTX_data_active_object(C); + Scene *scene = CTX_data_scene(C); + Object *obact = OBACT; if (obact && (obact->mode & OB_MODE_SCULPT)) { return true; } |