Merge "Enhanced RC: Optimization of the initial collapsing"
authorTheDJ <hartman.wiki@gmail.com>
Sun, 25 Aug 2013 13:03:14 +0000 (13:03 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sun, 25 Aug 2013 13:03:14 +0000 (13:03 +0000)
resources/jquery/jquery.makeCollapsible.js
resources/mediawiki.special/mediawiki.special.changeslist.enhanced.css

index 597aea1..f5c204c 100644 (file)
                        }
                }
 
-               wasCollapsed = $collapsible.hasClass( 'mw-collapsed' );
+               // This allows the element to be hidden on initial toggle without fiddling with the class
+               if ( options.wasCollapsed !== undefined ) {
+                       wasCollapsed = options.wasCollapsed;
+               } else {
+                       wasCollapsed = $collapsible.hasClass( 'mw-collapsed' );
+               }
 
                // Toggle the state of the collapsible element (that is, expand or collapse)
                $collapsible.toggleClass( 'mw-collapsed', !wasCollapsed );
 
                        // Initial state
                        if ( options.collapsed || $collapsible.hasClass( 'mw-collapsed' ) ) {
-                               // Remove here so that the toggler goes in the right direction (the class is re-added)
-                               $collapsible.removeClass( 'mw-collapsed' );
                                // One toggler can hook to multiple elements, and one element can have
                                // multiple togglers. This is the sanest way to handle that.
-                               actionHandler.call( $toggleLink.get( 0 ), null, { instantHide: true } );
+                               actionHandler.call( $toggleLink.get( 0 ), null, { instantHide: true, wasCollapsed: false } );
                        }
                } );
        };
index 2632c78..bed580d 100644 (file)
@@ -37,6 +37,17 @@ table.mw-enhanced-rc td.mw-enhanced-rc-nested {
        display: none;
 }
 
+/*
+ * And if it's enabled, let's optimize the collapsing a little: hide the rows
+ * that would be hidden by jquery.makeCollapsible with CSS to save us some
+ * reflows and repaints. This doesn't work on browsers that don't fully support
+ * CSS2 (IE6), but it's okay, this will be done in JavaScript with old degraded
+ * performance instead.
+ */
+.client-js table.mw-enhanced-rc.mw-collapsed tr + tr {
+       display: none;
+}
+
 .mw-enhancedchanges-arrow-space {
        display: inline-block;
        *display: inline; /* IE7 and below */