diff --git a/src/commands/view/SelectComponent.js b/src/commands/view/SelectComponent.js index f46b46aba..e4172d09d 100644 --- a/src/commands/view/SelectComponent.js +++ b/src/commands/view/SelectComponent.js @@ -731,9 +731,9 @@ export default { stop(ed, sender, opts = {}) { const { em, editor } = this; + this.onHovered(); // force to hide toolbar this.stopSelectComponent(); !opts.preserveSelected && em.setSelected(null); - this.onOut(); this.toggleToolsEl(); editor && editor.stopCommand('resize'); } diff --git a/src/css_composer/model/CssRule.js b/src/css_composer/model/CssRule.js index 973902de6..b08a5f331 100644 --- a/src/css_composer/model/CssRule.js +++ b/src/css_composer/model/CssRule.js @@ -55,12 +55,22 @@ export default Backbone.Model.extend(Styleable).extend({ ensureSelectors() { const { em } = this; - const result = []; const sm = em && em.get('SelectorManager'); - const selectors = this.getSelectors(); - const toInit = Array.isArray(selectors); - selectors.forEach(sel => result.push(sm ? sm.add(sel) : sel)); - toInit && this.set('selectors', new Selectors(result)); + const toListen = [this, 'change:selectors', this.ensureSelectors]; + let sels = this.getSelectors(); + this.stopListening(...toListen); + + if (sels.models) { + sels = [...sels.models]; + } + + if (Array.isArray(sels)) { + const res = sels.filter(i => i).map(i => (sm ? sm.add(i) : i)); + sels = new Selectors(res); + } + + this.set('selectors', sels); + this.listenTo(...toListen); }, /** diff --git a/src/css_composer/model/CssRules.js b/src/css_composer/model/CssRules.js index 61fbd6dcc..99309ab4b 100644 --- a/src/css_composer/model/CssRules.js +++ b/src/css_composer/model/CssRules.js @@ -16,7 +16,7 @@ export default Backbone.Collection.extend({ }, onAdd(model) { - model.ensureSelectors(); + model.ensureSelectors(); // required for undo }, onRemove(removed) {