Reapply "RCFilters: Don't apply/clear highlights 66 times"
authorRoan Kattouw <roan.kattouw@gmail.com>
Mon, 2 Oct 2017 19:07:57 +0000 (12:07 -0700)
committerRoan Kattouw <roan.kattouw@gmail.com>
Mon, 2 Oct 2017 19:07:57 +0000 (12:07 -0700)
Reverts 84ddcd5d23, reapplies 212d67c67.

The original version broke the highlight color circles, this fixes it
by using enable instead of this.highlightEnabled to pass down to the
items. The former was always false, so it didn't actually propagate
the state down correctly.

Bug: T177107
Change-Id: I341d9bcd39252eac07bfebfa6d46895bc62c372f

resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js

index 3b882a6..edb3d0f 100644 (file)
                enable = enable === undefined ? !this.highlightEnabled : enable;
 
                if ( this.highlightEnabled !== enable ) {
-                       this.highlightEnabled = enable;
-
+                       // HACK make sure highlights are disabled globally while we toggle on the items,
+                       // otherwise we'll call clearHighlight() and applyHighlight() many many times
+                       this.highlightEnabled = false;
                        this.getItems().forEach( function ( filterItem ) {
-                               filterItem.toggleHighlight( this.highlightEnabled );
-                       }.bind( this ) );
+                               filterItem.toggleHighlight( enable );
+                       } );
 
+                       this.highlightEnabled = enable;
                        this.emit( 'highlightChange', this.highlightEnabled );
                }
        };