diff --git a/src/commands/view/SelectPosition.js b/src/commands/view/SelectPosition.js index fc3241524..06f2f6a52 100644 --- a/src/commands/view/SelectPosition.js +++ b/src/commands/view/SelectPosition.js @@ -23,7 +23,7 @@ module.exports = { em: this.editorModel, canvasRelative: 1 }); - this.sorter.startSort(trg); + trg && this.sorter.startSort(trg); }, /** diff --git a/src/dom_components/view/ComponentView.js b/src/dom_components/view/ComponentView.js index 3fe33674a..58d252dbf 100644 --- a/src/dom_components/view/ComponentView.js +++ b/src/dom_components/view/ComponentView.js @@ -106,6 +106,7 @@ module.exports = Backbone.View.extend({ var selectedCls = pfx + 'selected'; var selectedParentCls = selectedCls + '-parent'; var freezedCls = `${ppfx}freezed`; + this.$el.removeClass(`${selectedCls} ${selectedParentCls} ${freezedCls}`); var actualCls = el.getAttribute('class') || ''; var cls = ''; @@ -119,10 +120,6 @@ module.exports = Backbone.View.extend({ case 'freezed': cls = `${actualCls} ${freezedCls}`; break; - default: - this.$el.removeClass( - `${selectedCls} ${selectedParentCls} ${freezedCls}` - ); } cls = cls.trim(); diff --git a/src/editor/model/Editor.js b/src/editor/model/Editor.js index b364d2f35..40e61fa2e 100644 --- a/src/editor/model/Editor.js +++ b/src/editor/model/Editor.js @@ -197,9 +197,6 @@ module.exports = Backbone.Model.extend({ * @private * */ componentSelected(model, val, options) { - const previous = this.previous('selectedComponent'); - console.log('previous', previous, previous && previous.get('status')); - if (!this.get('selectedComponent')) { this.trigger('deselect-comp'); } else { @@ -227,6 +224,7 @@ module.exports = Backbone.Model.extend({ let model = el; isElement(el) && (model = $(el).data('model')); if (model && !model.get('selectable')) return; + opts.forceChange && this.set('selectedComponent', ''); this.set('selectedComponent', model, opts); }, diff --git a/src/navigator/view/ItemsView.js b/src/navigator/view/ItemsView.js index 1cfdb9492..2a94a775b 100644 --- a/src/navigator/view/ItemsView.js +++ b/src/navigator/view/ItemsView.js @@ -17,14 +17,19 @@ module.exports = require('backbone').View.extend({ this.listenTo(coll, 'add', this.addTo); this.listenTo(coll, 'reset resetNavigator', this.render); this.className = `${pfx}layers`; + const em = config.em; if (config.sortable && !this.opt.sorter) { - const utils = config.em.get('Utils'); + const utils = em.get('Utils'); this.opt.sorter = new utils.Sorter({ container: config.sortContainer || this.el, containerSel: `.${this.className}`, itemSel: `.${pfx}layer`, ignoreViewChildren: 1, + onEndMove(created, sorter) { + const srcModel = sorter.getSourceModel(); + em.setSelected(srcModel, { forceChange: 1 }); + }, avoidSelectOnEnd: 1, nested: 1, ppfx, diff --git a/src/utils/Sorter.js b/src/utils/Sorter.js index 7e1ad0fcd..3e1c02e42 100644 --- a/src/utils/Sorter.js +++ b/src/utils/Sorter.js @@ -1,4 +1,4 @@ -import { isString } from 'underscore'; +import { isString, isFunction } from 'underscore'; import { on, off, matches } from 'utils/mixins'; const $ = Backbone.$; @@ -670,7 +670,6 @@ module.exports = Backbone.View.extend({ const width = rect.width; const height = rect.height; - //console.log(pos, {top, left}); if ( y < top + off || // near top edge y > top + height - off || // near bottom edge @@ -719,8 +718,6 @@ module.exports = Backbone.View.extend({ width = el.offsetWidth; } - //console.log('get dim', top, left, this.canvasRelative); - return [top, left, height, width]; }, @@ -918,12 +915,11 @@ module.exports = Backbone.View.extend({ var clsReg = new RegExp('(?:^|\\s)' + this.freezeClass + '(?!\\S)', 'gi'); let src = this.eV; - if (src) { + if (src && this.selectOnEnd) { var srcModel = this.getSourceModel(); if (srcModel && srcModel.set) { srcModel.set('status', ''); srcModel.set('status', 'selected'); - //this.selectOnEnd && srcModel.set('status', 'selected'); } } @@ -932,9 +928,7 @@ module.exports = Backbone.View.extend({ } if (this.plh) this.plh.style.display = 'none'; - - if (typeof this.onEndMove === 'function') this.onEndMove(created); - + if (isFunction(this.onEndMove)) this.onEndMove(created, this); var dragHelper = this.dragHelper; if (dragHelper) {