[MediaWiki-commits] [Gerrit] mediawiki/core[master]: RCFilters UI: Destroy CapsuleItemWidget when it is removed
jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/337208 ) Change subject: RCFilters UI: Destroy CapsuleItemWidget when it is removed .. RCFilters UI: Destroy CapsuleItemWidget when it is removed The widget is recreated when an item is reinserted, so we should clean up the external elements it creates (like the popup) and disconnect from events. Bug: T157852 Change-Id: I8e6eaac7b1a3062d156d4c0b5b912d1a6bfae7de --- M resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js M resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js 2 files changed, 29 insertions(+), 0 deletions(-) Approvals: Catrope: Looks good to me, approved jenkins-bot: Verified diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js index 525f718..40d31c5 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js @@ -107,4 +107,16 @@ mw.rcfilters.ui.CapsuleItemWidget.prototype.onCapsuleRemovedByUser = function () { this.controller.updateFilter( this.model.getName(), false ); }; + + /** +* Remove and destroy external elements of this widget +*/ + mw.rcfilters.ui.CapsuleItemWidget.prototype.destroy = function () { + // Destroy the popup + this.popup.$element.detach(); + + // Disconnect events + this.model.disconnect( this ); + this.closeButton.disconnect( this ); + }; }( mediaWiki, jQuery ) ); diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js index 56303d5..9bb1a98 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js @@ -230,4 +230,21 @@ this.menu.selectItem(); this.menu.highlightItem(); }; + + /** +* @inheritdoc +*/ + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.removeItems = function ( items ) { + // Parent call + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.parent.prototype.removeItems.call( this, items ); + + // Destroy the item widget when it is removed + // This is done because we re-add items by recreating them, rather than hiding them + // and items include popups, that will just continue to be created and appended + // unnecessarily. + items.forEach( function ( widget ) { + widget.destroy(); + } ); + }; + }( mediaWiki, jQuery ) ); -- To view, visit https://gerrit.wikimedia.org/r/337208 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I8e6eaac7b1a3062d156d4c0b5b912d1a6bfae7de Gerrit-PatchSet: 2 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: MooeypooGerrit-Reviewer: Catrope Gerrit-Reviewer: Mooeypoo Gerrit-Reviewer: jenkins-bot <> ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] mediawiki/core[master]: RCFilters UI: Destroy CapsuleItemWidget when it is removed
Mooeypoo has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/337208 ) Change subject: RCFilters UI: Destroy CapsuleItemWidget when it is removed .. RCFilters UI: Destroy CapsuleItemWidget when it is removed The widget is recreated when an item is reinserted, so we should clean up the external elements it creates (like the popup) and disconnect from events. Bug: T157852 Change-Id: I8e6eaac7b1a3062d156d4c0b5b912d1a6bfae7de --- M resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js M resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js 2 files changed, 30 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/08/337208/1 diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js index 525f718..ab8ce03 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js @@ -107,4 +107,17 @@ mw.rcfilters.ui.CapsuleItemWidget.prototype.onCapsuleRemovedByUser = function () { this.controller.updateFilter( this.model.getName(), false ); }; + + /** +* Remove and destroy external elements of this widget +*/ + mw.rcfilters.ui.CapsuleItemWidget.prototype.destroy = function () { + // Destroy the popup + this.popup.toggle( false ); + this.popup.$element.detach(); + + // Disconnect events + this.model.disconnect( this ); + this.closeButton.disconnect( this ); + }; }( mediaWiki, jQuery ) ); diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js index 56303d5..9bb1a98 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js @@ -230,4 +230,21 @@ this.menu.selectItem(); this.menu.highlightItem(); }; + + /** +* @inheritdoc +*/ + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.removeItems = function ( items ) { + // Parent call + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.parent.prototype.removeItems.call( this, items ); + + // Destroy the item widget when it is removed + // This is done because we re-add items by recreating them, rather than hiding them + // and items include popups, that will just continue to be created and appended + // unnecessarily. + items.forEach( function ( widget ) { + widget.destroy(); + } ); + }; + }( mediaWiki, jQuery ) ); -- To view, visit https://gerrit.wikimedia.org/r/337208 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I8e6eaac7b1a3062d156d4c0b5b912d1a6bfae7de Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Mooeypoo___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits