Title: [140335] trunk/Source/WebCore
Revision
140335
Author
[email protected]
Date
2013-01-21 08:07:43 -0800 (Mon, 21 Jan 2013)

Log Message

Web Inspector: data grid resize is slow
https://bugs.webkit.org/show_bug.cgi?id=107291

Reviewed by Pavel Feldman.

- avoid (most of) unnecessary relayouts and style recalculation when dragging data grid resizer.

* inspector/front-end/DataGrid.js:
(WebInspector.DataGrid.prototype._positionResizers):
(WebInspector.DataGrid.prototype._resizerDragging):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (140334 => 140335)


--- trunk/Source/WebCore/ChangeLog	2013-01-21 15:33:57 UTC (rev 140334)
+++ trunk/Source/WebCore/ChangeLog	2013-01-21 16:07:43 UTC (rev 140335)
@@ -1,3 +1,16 @@
+2013-01-18  Andrey Kosyakov  <[email protected]>
+
+        Web Inspector: data grid resize is slow
+        https://bugs.webkit.org/show_bug.cgi?id=107291
+
+        Reviewed by Pavel Feldman.
+
+        - avoid (most of) unnecessary relayouts and style recalculation when dragging data grid resizer.
+
+        * inspector/front-end/DataGrid.js:
+        (WebInspector.DataGrid.prototype._positionResizers):
+        (WebInspector.DataGrid.prototype._resizerDragging):
+
 2013-01-21  Vladislav Kaznacheev  <[email protected]>
 
         [Inspector] Layout Elements panel in a single column when docked right.

Modified: trunk/Source/WebCore/inspector/front-end/DataGrid.js (140334 => 140335)


--- trunk/Source/WebCore/inspector/front-end/DataGrid.js	2013-01-21 15:33:57 UTC (rev 140334)
+++ trunk/Source/WebCore/inspector/front-end/DataGrid.js	2013-01-21 16:07:43 UTC (rev 140335)
@@ -684,7 +684,10 @@
 
             if (!this._columnsArray[i].hidden) {
                 resizer.style.removeProperty("display");
-                resizer.style.left = left + "px";
+                if (resizer._position !== left) {
+                    resizer._position = left;
+                    resizer.style.left = left + "px";
+                }
                 resizer.leftNeighboringColumnIndex = i;
                 if (previousResizer)
                     previousResizer.rightNeighboringColumnIndex = i;
@@ -974,6 +977,8 @@
         if (!resizer)
             return;
 
+        var tableWidth = this._dataTable.offsetWidth; // Cache it early, before we invalidate layout.
+
         // Constrain the dragpoint to be within the containing div of the
         // datagrid.
         var dragPoint = event.clientX - this.element.totalOffsetLeft();
@@ -1004,11 +1009,11 @@
 
         resizer.style.left = (dragPoint - this.CenterResizerOverBorderAdjustment) + "px";
 
-        var percentLeftColumn = (((dragPoint - leftEdgeOfPreviousColumn) / this._dataTable.offsetWidth) * 100) + "%";
+        var percentLeftColumn = (((dragPoint - leftEdgeOfPreviousColumn) / tableWidth) * 100) + "%";
         this._headerTableColumnGroup.children[leftCellIndex].style.width = percentLeftColumn;
         this._dataTableColumnGroup.children[leftCellIndex].style.width = percentLeftColumn;
 
-        var percentRightColumn = (((rightEdgeOfNextColumn - dragPoint) / this._dataTable.offsetWidth) * 100) + "%";
+        var percentRightColumn = (((rightEdgeOfNextColumn - dragPoint) / tableWidth) * 100) + "%";
         this._headerTableColumnGroup.children[rightCellIndex].style.width =  percentRightColumn;
         this._dataTableColumnGroup.children[rightCellIndex].style.width = percentRightColumn;
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to