From 6edc196126aabee6e3dcb79f8093887fef402c1c Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Thu, 30 Nov 2023 01:01:38 +0400 Subject: [PATCH] Fix UndoManager start/stop. Fixes #5530 --- src/style_manager/index.ts | 42 +++++++++++++++++++------------------- src/undo_manager/index.ts | 6 ++++-- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/style_manager/index.ts b/src/style_manager/index.ts index 148027453..932255876 100644 --- a/src/style_manager/index.ts +++ b/src/style_manager/index.ts @@ -552,33 +552,33 @@ export default class StyleManager extends ItemManagerModule< const useClasses = !smConf.componentFirst || options.useClasses; const addOpts = { noCount: 1 }; const opts = { state, addOpts }; - let rule; - // I stop undo manager here as after adding the CSSRule (generally after + // Skipping undo manager here as after adding the CSSRule (generally after // selecting the component) and calling undo() it will remove the rule from // the collection, therefore updating it in style manager will not affect it // #268 - um.stop(); - - if (hasClasses && useClasses) { - const deviceW = em.getCurrentMedia(); - rule = cssC.get(valid, state, deviceW); - - if (!rule && !skipAdd) { - rule = cssC.add(valid, state, deviceW, {}, addOpts); - } - } else if (config.avoidInlineStyle) { - const id = model.getId(); - rule = cssC.getIdRule(id, opts); - !rule && !skipAdd && (rule = cssC.setIdRule(id, {}, opts)); - if (model.is('wrapper')) { - // @ts-ignore - rule!.set('wrapper', 1, addOpts); + um.skip(() => { + let rule; + + if (hasClasses && useClasses) { + const deviceW = em.getCurrentMedia(); + rule = cssC.get(valid, state, deviceW); + + if (!rule && !skipAdd) { + rule = cssC.add(valid, state, deviceW, {}, addOpts); + } + } else if (config.avoidInlineStyle) { + const id = model.getId(); + rule = cssC.getIdRule(id, opts); + !rule && !skipAdd && (rule = cssC.setIdRule(id, {}, opts)); + if (model.is('wrapper')) { + // @ts-ignore + rule!.set('wrapper', 1, addOpts); + } } - } - rule && (model = rule); - um.start(); + rule && (model = rule); + }); } return model; diff --git a/src/undo_manager/index.ts b/src/undo_manager/index.ts index 121c6e315..1e289b784 100644 --- a/src/undo_manager/index.ts +++ b/src/undo_manager/index.ts @@ -323,9 +323,11 @@ export default class UndoManagerModule extends Module