Fix T74205: crash cancelling transfrom operation in sculpt mode
Differential Revision: https://developer.blender.org/D7018
This commit is contained in:
parent
80513d8574
commit
1a69384e76
Notes:
blender-bot
2023-02-14 10:11:54 +01:00
Referenced by issue #74205, Crash in sculpt mode at trying to rotate after a cancelled rotate
|
@ -11076,7 +11076,11 @@ void ED_sculpt_end_transform(struct bContext *C)
|
|||
if (ss->filter_cache) {
|
||||
sculpt_filter_cache_free(ss);
|
||||
}
|
||||
SCULPT_undo_push_end();
|
||||
/* Force undo push to happen even inside transform operator, since the sculpt
|
||||
* undo system works separate from regular undo and this is require to properly
|
||||
* finish an undo step also when cancelling. */
|
||||
const bool use_nested_undo = true;
|
||||
SCULPT_undo_push_end_ex(use_nested_undo);
|
||||
sculpt_flush_update_done(C, ob, SCULPT_UPDATE_COORDS);
|
||||
}
|
||||
|
||||
|
|
|
@ -726,6 +726,7 @@ SculptUndoNode *SCULPT_undo_push_node(Object *ob, PBVHNode *node, SculptUndoType
|
|||
SculptUndoNode *SCULPT_undo_get_node(PBVHNode *node);
|
||||
void SCULPT_undo_push_begin(const char *name);
|
||||
void SCULPT_undo_push_end(void);
|
||||
void SCULPT_undo_push_end_ex(const bool use_nested_undo);
|
||||
|
||||
void SCULPT_vertcos_to_key(Object *ob, KeyBlock *kb, const float (*vertCos)[3]);
|
||||
|
||||
|
|
|
@ -1289,6 +1289,11 @@ void SCULPT_undo_push_begin(const char *name)
|
|||
}
|
||||
|
||||
void SCULPT_undo_push_end(void)
|
||||
{
|
||||
SCULPT_undo_push_end_ex(false);
|
||||
}
|
||||
|
||||
void SCULPT_undo_push_end_ex(const bool use_nested_undo)
|
||||
{
|
||||
UndoSculpt *usculpt = sculpt_undo_get_nodes();
|
||||
SculptUndoNode *unode;
|
||||
|
@ -1307,7 +1312,7 @@ void SCULPT_undo_push_end(void)
|
|||
|
||||
/* We could remove this and enforce all callers run in an operator using 'OPTYPE_UNDO'. */
|
||||
wmWindowManager *wm = G_MAIN->wm.first;
|
||||
if (wm->op_undo_depth == 0) {
|
||||
if (wm->op_undo_depth == 0 || use_nested_undo) {
|
||||
UndoStack *ustack = ED_undo_stack_get();
|
||||
BKE_undosys_step_push(ustack, NULL, NULL);
|
||||
WM_file_tag_modified();
|
||||
|
|
Loading…
Reference in New Issue