Browse Source

Fix UndoManager start/stop. Fixes #5530

pull/5546/head
Artur Arseniev 2 years ago
parent
commit
6edc196126
  1. 42
      src/style_manager/index.ts
  2. 6
      src/undo_manager/index.ts

42
src/style_manager/index.ts

@ -552,33 +552,33 @@ export default class StyleManager extends ItemManagerModule<
const useClasses = !smConf.componentFirst || options.useClasses; const useClasses = !smConf.componentFirst || options.useClasses;
const addOpts = { noCount: 1 }; const addOpts = { noCount: 1 };
const opts = { state, addOpts }; 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 // selecting the component) and calling undo() it will remove the rule from
// the collection, therefore updating it in style manager will not affect it // the collection, therefore updating it in style manager will not affect it
// #268 // #268
um.stop(); um.skip(() => {
let rule;
if (hasClasses && useClasses) {
const deviceW = em.getCurrentMedia(); if (hasClasses && useClasses) {
rule = cssC.get(valid, state, deviceW); const deviceW = em.getCurrentMedia();
rule = cssC.get(valid, state, deviceW);
if (!rule && !skipAdd) {
rule = cssC.add(valid, state, deviceW, {}, addOpts); if (!rule && !skipAdd) {
} rule = cssC.add(valid, state, deviceW, {}, addOpts);
} else if (config.avoidInlineStyle) { }
const id = model.getId(); } else if (config.avoidInlineStyle) {
rule = cssC.getIdRule(id, opts); const id = model.getId();
!rule && !skipAdd && (rule = cssC.setIdRule(id, {}, opts)); rule = cssC.getIdRule(id, opts);
if (model.is('wrapper')) { !rule && !skipAdd && (rule = cssC.setIdRule(id, {}, opts));
// @ts-ignore if (model.is('wrapper')) {
rule!.set('wrapper', 1, addOpts); // @ts-ignore
rule!.set('wrapper', 1, addOpts);
}
} }
}
rule && (model = rule); rule && (model = rule);
um.start(); });
} }
return model; return model;

6
src/undo_manager/index.ts

@ -323,9 +323,11 @@ export default class UndoManagerModule extends Module<UndoManagerConfig & { name
} }
skip(clb: Function) { skip(clb: Function) {
this.stop(); const isTracking = !!this.um.isTracking();
isTracking && this.stop();
clb(); clb();
this.start(); isTracking && this.start();
} }
getGroupedStack(): UndoGroup[] { getGroupedStack(): UndoGroup[] {

Loading…
Cancel
Save