diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-11-14 11:48:29 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-11-14 11:50:48 +0300 |
commit | 9fff74f1447f8db1e288efe9ebd559370455de9f (patch) | |
tree | 515d1218978024692b8bca27262a6908c048b4aa /source/blender/editors/interface | |
parent | bcff8037122d439d4d268a03ff121b56c2dd7b47 (diff) |
Sculpt: disable undo from any UI elements in sculpt mode
Causes undo push in sculpt mode, see: T71434
Diffstat (limited to 'source/blender/editors/interface')
-rw-r--r-- | source/blender/editors/interface/interface_handlers.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 0b4adb33b1c..806b5789df1 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -764,6 +764,7 @@ static void ui_apply_but_undo(uiBut *but) if (but->flag & UI_BUT_UNDO) { const char *str = NULL; + bool skip_undo = false; /* define which string to use for undo */ if (but->type == UI_BTYPE_MENU) { @@ -792,11 +793,23 @@ static void ui_apply_but_undo(uiBut *but) else { ID *id = but->rnapoin.owner_id; if (!ED_undo_is_legacy_compatible_for_property(but->block->evil_C, id)) { - str = ""; + skip_undo = true; } } } + if (skip_undo == false) { + /* XXX: disable all undo pushes from UI changes from sculpt mode as they cause memfile undo + * steps to be written which cause lag: T71434. */ + if (BKE_paintmode_get_active_from_context(but->block->evil_C) == PAINT_MODE_SCULPT) { + skip_undo = true; + } + } + + if (skip_undo) { + str = ""; + } + /* delayed, after all other funcs run, popups are closed, etc */ after = ui_afterfunc_new(); BLI_strncpy(after->undostr, str, sizeof(after->undostr)); |