From c78c52ddc196f6e01bb59c1ffe83daedbfa8774b Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Tue, 29 Dec 2020 18:24:50 +0100 Subject: [PATCH] Properly remove editor toolbars when a Component is removed. Fixes #3175 --- src/commands/view/SelectComponent.js | 2 +- src/dom_components/model/Components.js | 1 + src/dom_components/view/ComponentTextView.js | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/commands/view/SelectComponent.js b/src/commands/view/SelectComponent.js index e4172d09d..f4408bdf5 100644 --- a/src/commands/view/SelectComponent.js +++ b/src/commands/view/SelectComponent.js @@ -88,7 +88,7 @@ export default { }; methods[method](window, 'resize', this.onFrameUpdated); methods[method](listenToEl, 'scroll', this.onContainerChange); - em[method]('component:toggled', this.onSelect, this); + em[method]('component:toggled component:remove', this.onSelect, this); em[method]('change:componentHovered', this.onHovered, this); em[method]( 'component:resize component:styleUpdate component:input', diff --git a/src/dom_components/model/Components.js b/src/dom_components/model/Components.js index c924ba1de..e8f93777b 100644 --- a/src/dom_components/model/Components.js +++ b/src/dom_components/model/Components.js @@ -86,6 +86,7 @@ export default Backbone.Collection.extend({ const optStyle = { target: removed }; hasSign && cm.run('core:component-style-clear', optStyle); removed.removed(); + removed.trigger('removed'); em.trigger('component:remove', removed); } diff --git a/src/dom_components/view/ComponentTextView.js b/src/dom_components/view/ComponentTextView.js index ebdfafd7c..1bf796879 100644 --- a/src/dom_components/view/ComponentTextView.js +++ b/src/dom_components/view/ComponentTextView.js @@ -164,7 +164,7 @@ export default ComponentView.extend({ * @param {Boolean} enable */ toggleEvents(enable) { - const { em } = this; + const { em, model } = this; const mixins = { on, off }; const method = enable ? 'on' : 'off'; em.setEditing(enable); @@ -175,6 +175,7 @@ export default ComponentView.extend({ mixins.off(elDocs, 'mousedown', this.disableEditing); mixins[method](elDocs, 'mousedown', this.disableEditing); em[method]('toolbar:run:before', this.disableEditing); + model[method]('removed', this.disableEditing); // Avoid closing edit mode on component click this.$el.off('mousedown', this.disablePropagation);