From e62b3fecbb7c3a35a32ca9b3724820d3ee68686f Mon Sep 17 00:00:00 2001 From: Thiemo Kreuz Date: Mon, 13 Sep 2021 13:42:20 +0200 Subject: [PATCH] Optimize .selectPartById() to fire less events There is no point in firing this event when noting changed. This should reduce flickering and some of the issues described in I97d77f4. Change-Id: I7c387889a4a33dac5053cec11a0641d358020b56 --- .../ve.ui.MWTransclusionOutlineContainerWidget.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWTransclusionOutlineContainerWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWTransclusionOutlineContainerWidget.js index 6cef1f1071..9e7d32384e 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWTransclusionOutlineContainerWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWTransclusionOutlineContainerWidget.js @@ -153,10 +153,17 @@ ve.ui.MWTransclusionOutlineContainerWidget.prototype.addPartWidget = function ( * parameter ids like "part_1/param1". */ ve.ui.MWTransclusionOutlineContainerWidget.prototype.selectPartById = function ( partId ) { + var changed = false; for ( var id in this.partWidgets ) { - this.partWidgets[ id ].setSelected( id === partId ); + var selected = id === partId; + if ( this.partWidgets[ id ].isSelected() !== selected ) { + this.partWidgets[ id ].setSelected( selected ); + changed = true; + } + } + if ( changed ) { + this.emit( 'updateOutlineControlButtons', partId ); } - this.emit( 'updateOutlineControlButtons', partId ); }; /**