Browse Source

Ensure UndoManager on components

pull/3411/head
Artur Arseniev 6 years ago
parent
commit
3c28507460
  1. 2
      src/canvas/model/Frame.js
  2. 22
      src/dom_components/model/Component.js
  3. 7
      src/dom_components/model/Components.js

2
src/canvas/model/Frame.js

@ -44,8 +44,6 @@ export default Model.extend({
!props.width && this.set(keyAutoW, 1);
!props.height && this.set(keyAutoH, 1);
this.getComponent()._initUm();
},
changesUp: debounce(function(opt = {}) {

22
src/dom_components/model/Component.js

@ -208,17 +208,31 @@ const Component = Backbone.Model.extend(Styleable).extend(
});
if (!opt.temporary) {
this.__postAdd();
this.init();
this.__isSymbolOrInst() && this.__initSymb();
em && em.trigger('component:create', this);
}
},
_initUm() {
__postAdd(opts = {}) {
const um = this.em.get('UndoManager');
if (!um) return;
um.add(this);
um.add(this.components());
const comps = this.components();
if (um && !this.__hasUm) {
um.add(this);
um.add(comps);
this.__hasUm = 1;
}
opts.recursive && comps.map(c => c.__postAdd(opts));
},
__postRemove() {
const um = this.em.get('UndoManager');
if (um) {
um.remove(this);
um.remove(this.components());
delete this.__hasUm;
}
},
__onChange(m, opts) {

7
src/dom_components/model/Components.js

@ -97,12 +97,10 @@ export default Backbone.Collection.extend({
// Remove stuff registered in DomComponents.handleChanges
const inner = removed.components();
const um = em.get('UndoManager');
em.stopListening(inner);
em.stopListening(removed);
em.stopListening(removed.get('classes'));
um.remove(removed);
um.remove(inner);
removed.__postRemove();
},
model(attrs, options) {
@ -252,7 +250,8 @@ export default Backbone.Collection.extend({
model.setStyle({});
model.addClass(name);
}
model._initUm();
model.__postAdd({ recursive: 1 });
this.__onAddEnd();
},

Loading…
Cancel
Save