Browse Source

Fix handleChanges

pull/663/head
Artur Arseniev 9 years ago
parent
commit
93783bb124
  1. 7
      src/dom_components/index.js
  2. 6
      src/dom_components/view/ComponentTextView.js
  3. 2
      src/undo_manager/index.js

7
src/dom_components/index.js

@ -247,12 +247,13 @@ module.exports = () => {
* @private * @private
*/ */
handleChanges(model, value, opts = {}) { handleChanges(model, value, opts = {}) {
const comps = model.get('components'); const comps = model.components();
const um = em.get('UndoManager'); const um = em.get('UndoManager');
const handleUpdates = em.handleUpdates.bind(em); const handleUpdates = em.handleUpdates.bind(em);
const handleChanges = this.handleChanges.bind(this); const handleChanges = this.handleChanges.bind(this);
const handleRemoves = this.handleRemoves.bind(this); const handleRemoves = this.handleRemoves.bind(this);
um && um.add(model) && comps && um.add(comps); um && um.add(model);
um && comps && um.add(comps);
const evn = 'change:style change:content change:attributes change:src'; const evn = 'change:style change:content change:attributes change:src';
[ [model, evn, handleUpdates], [ [model, evn, handleUpdates],
@ -265,7 +266,7 @@ module.exports = () => {
}); });
!opts.avoidStore && handleUpdates('', '', opts); !opts.avoidStore && handleUpdates('', '', opts);
comps.each(model => this.handleChanges(model)); comps.each(model => this.handleChanges(model, value, opts));
}, },

6
src/dom_components/view/ComponentTextView.js

@ -60,14 +60,14 @@ module.exports = ComponentView.extend({
const content = this.getChildrenContainer().innerHTML; const content = this.getChildrenContainer().innerHTML;
const comps = model.get('components'); const comps = model.get('components');
comps.length && comps.reset(); comps.length && comps.reset();
model.set('content', '');
// If there is a custom RTE the content is just baked staticly // If there is a custom RTE the content is just baked staticly
// inside 'content' // inside 'content'
if (rte.customRte) { if (rte.customRte) {
// Avoid double content by removing its children components // Avoid double content by removing its children components
// and force to trigger change // and force to trigger change
model.set('content', '') model.set('content', content);
.set('content', content);
} else { } else {
const clean = model => { const clean = model => {
model.set({ model.set({
@ -82,7 +82,7 @@ module.exports = ComponentView.extend({
} }
// Avoid re-render on reset with silent option // Avoid re-render on reset with silent option
model.set('content', '').trigger('change:content', model); model.trigger('change:content', model);
comps.add(content); comps.add(content);
comps.each(model => clean(model)); comps.each(model => clean(model));
comps.trigger('resetNavigator'); comps.trigger('resetNavigator');

2
src/undo_manager/index.js

@ -31,6 +31,7 @@ module.exports = () => {
em = config.em; em = config.em;
this.em = em; this.em = em;
um = new UndoManager({ track: true, register: [] }); um = new UndoManager({ track: true, register: [] });
um.changeUndoType('change', { condition: false });
const customUndoType = { const customUndoType = {
on(object, value, opt = {}) { on(object, value, opt = {}) {
!beforeCache && (beforeCache = object.previousAttributes()); !beforeCache && (beforeCache = object.previousAttributes());
@ -59,7 +60,6 @@ module.exports = () => {
const events = ['style', 'attributes', 'content', 'src']; const events = ['style', 'attributes', 'content', 'src'];
events.forEach(ev => um.addUndoType(`change:${ev}`, customUndoType)); events.forEach(ev => um.addUndoType(`change:${ev}`, customUndoType));
um.changeUndoType('change', { condition: false });
um.on('undo redo', () => em.trigger('change:selectedComponent change:canvasOffset')); um.on('undo redo', () => em.trigger('change:selectedComponent change:canvasOffset'));
return this; return this;

Loading…
Cancel
Save