From 075a1221907f33c8634cc6e38238f6729334c716 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 7 Feb 2019 17:54:53 +1100 Subject: Fix sculpt undo steps not enabling dyntopo Logic to disable dyntopo when entering sculpt mode was applied on undo. --- source/blender/editors/include/ED_object.h | 2 +- source/blender/editors/sculpt_paint/sculpt.c | 8 ++++---- source/blender/editors/sculpt_paint/sculpt_undo.c | 2 +- source/blender/editors/util/ed_util.c | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) (limited to 'source') diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h index 8c6b8a97b79..612adec1860 100644 --- a/source/blender/editors/include/ED_object.h +++ b/source/blender/editors/include/ED_object.h @@ -151,7 +151,7 @@ void ED_object_wpaintmode_exit(struct bContext *C); void ED_object_sculptmode_enter_ex( struct Main *bmain, struct Depsgraph *depsgraph, - struct Scene *scene, struct Object *ob, + struct Scene *scene, struct Object *ob, const bool force_dyntopo, struct ReportList *reports); void ED_object_sculptmode_enter(struct bContext *C, struct ReportList *reports); void ED_object_sculptmode_exit_ex( diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 6512e279a15..b994a688f86 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -5845,7 +5845,7 @@ static int ed_object_sculptmode_flush_recalc_flag(Scene *scene, Object *ob, Mult void ED_object_sculptmode_enter_ex( Main *bmain, Depsgraph *depsgraph, - Scene *scene, Object *ob, + Scene *scene, Object *ob, const bool force_dyntopo, ReportList *reports) { const int mode_flag = OB_MODE_SCULPT; @@ -5926,7 +5926,7 @@ void ED_object_sculptmode_enter_ex( } } - if (message_unsupported == NULL) { + if ((message_unsupported == NULL) || force_dyntopo) { /* Needed because we may be entering this mode before the undo system loads. */ wmWindowManager *wm = bmain->wm.first; bool has_undo = wm->undo_stack != NULL; @@ -5959,7 +5959,7 @@ void ED_object_sculptmode_enter(struct bContext *C, ReportList *reports) ViewLayer *view_layer = CTX_data_view_layer(C); Object *ob = OBACT(view_layer); Depsgraph *depsgraph = CTX_data_depsgraph(C); - ED_object_sculptmode_enter_ex(bmain, depsgraph, scene, ob, reports); + ED_object_sculptmode_enter_ex(bmain, depsgraph, scene, ob, false, reports); } void ED_object_sculptmode_exit_ex( @@ -6041,7 +6041,7 @@ static int sculpt_mode_toggle_exec(bContext *C, wmOperator *op) ED_object_sculptmode_exit_ex(depsgraph, scene, ob); } else { - ED_object_sculptmode_enter_ex(bmain, depsgraph, scene, ob, op->reports); + ED_object_sculptmode_enter_ex(bmain, depsgraph, scene, ob, false, op->reports); BKE_paint_toolslots_brush_validate(bmain, &ts->sculpt->paint); } diff --git a/source/blender/editors/sculpt_paint/sculpt_undo.c b/source/blender/editors/sculpt_paint/sculpt_undo.c index 1b8e6da6ee3..67b815ee7d6 100644 --- a/source/blender/editors/sculpt_paint/sculpt_undo.c +++ b/source/blender/editors/sculpt_paint/sculpt_undo.c @@ -1119,7 +1119,7 @@ static void sculpt_undosys_step_decode(struct bContext *C, struct Main *bmain, U /* Don't add sculpt topology undo steps when reading back undo state. * The undo steps must enter/exit for us. */ me->flag &= ~ME_SCULPT_DYNAMIC_TOPOLOGY; - ED_object_sculptmode_enter_ex(bmain, depsgraph, scene, ob, NULL); + ED_object_sculptmode_enter_ex(bmain, depsgraph, scene, ob, true, NULL); } BLI_assert(sculpt_undosys_poll(C)); } diff --git a/source/blender/editors/util/ed_util.c b/source/blender/editors/util/ed_util.c index 0e3158c6d44..16b85f53270 100644 --- a/source/blender/editors/util/ed_util.c +++ b/source/blender/editors/util/ed_util.c @@ -146,7 +146,7 @@ void ED_editors_init(bContext *C) else if (mode & OB_MODE_ALL_SCULPT) { if (obact == ob) { if (mode == OB_MODE_SCULPT) { - ED_object_sculptmode_enter_ex(bmain, depsgraph, scene, ob, reports); + ED_object_sculptmode_enter_ex(bmain, depsgraph, scene, ob, true, reports); } else if (mode == OB_MODE_VERTEX_PAINT) { ED_object_vpaintmode_enter_ex(bmain, depsgraph, wm, scene, ob); -- cgit v1.2.3