Changeset 146866 in webkit


Ignore:
Timestamp:
Mar 26, 2013 4:23:26 AM (11 years ago)
Author:
loislo@chromium.org
Message:

Web Inspector: OverviewGrid. Dragged window may change its width due to accumulating rounding error.
https://bugs.webkit.org/show_bug.cgi?id=113138

Reviewed by Pavel Feldman.

The old version had problem with rounding because it recalculates the window size on each event.
The new version just calculates the dragging delta and moves the window
to the new position based on the initial values and the delta.

  • inspector/front-end/OverviewGrid.js:

(WebInspector.OverviewGrid.Window.prototype._startWindowDragging):
(WebInspector.OverviewGrid.Window.prototype._windowDragging):
(WebInspector.OverviewGrid.Window.prototype._onMouseWheel):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r146860 r146866  
     12013-03-26  Ilya Tikhonovsky  <loislo@chromium.org>
     2
     3        Web Inspector: OverviewGrid. Dragged window may change its width due to accumulating rounding error.
     4        https://bugs.webkit.org/show_bug.cgi?id=113138
     5
     6        Reviewed by Pavel Feldman.
     7
     8        The old version had problem with rounding because it recalculates the window size on each event.
     9        The new version just calculates the dragging delta and moves the window
     10        to the new position based on the initial values and the delta.
     11
     12        * inspector/front-end/OverviewGrid.js:
     13        (WebInspector.OverviewGrid.Window.prototype._startWindowDragging):
     14        (WebInspector.OverviewGrid.Window.prototype._windowDragging):
     15        (WebInspector.OverviewGrid.Window.prototype._onMouseWheel):
     16
    1172013-03-26  Kent Tamura  <tkent@chromium.org>
    218
  • trunk/Source/WebCore/inspector/front-end/OverviewGrid.js

    r146753 r146866  
    306306    _startWindowDragging: function(event)
    307307    {
    308         var windowLeft = this._leftResizeElement.offsetLeft + WebInspector.OverviewGrid.ResizerOffset;
    309         this._dragOffset = windowLeft - event.pageX;
     308        this._dragStartPoint = event.pageX;
     309        this._dragStartLeft = this.windowLeft;
     310        this._dragStartRight = this.windowRight;
    310311        return true;
    311312    },
     
    316317    _windowDragging: function(event)
    317318    {
    318         var windowLeft = this._leftResizeElement.offsetLeft + WebInspector.OverviewGrid.ResizerOffset;
    319         var start = this._dragOffset + event.pageX;
    320         this._moveWindow(start);
    321319        event.preventDefault();
     320        var delta = (event.pageX - this._dragStartPoint) / this._parentElement.clientWidth;
     321        if (this._dragStartLeft + delta < 0)
     322            delta = -this._dragStartLeft;
     323
     324        if (this._dragStartRight + delta > 1)
     325            delta = 1 - this._dragStartRight;
     326
     327        this._setWindow(this._dragStartLeft + delta, this._dragStartRight + delta);
    322328    },
    323329
     
    328334    {
    329335        delete this._dragOffset;
    330     },
    331 
    332     /**
    333      * @param {number} start
    334      */
    335     _moveWindow: function(start)
    336     {
    337         var windowLeft = this._leftResizeElement.offsetLeft + WebInspector.OverviewGrid.ResizerOffset;
    338         var windowRight = this._rightResizeElement.offsetLeft + WebInspector.OverviewGrid.ResizerOffset;
    339         var windowSize = windowRight - windowLeft;
    340         var end = start + windowSize;
    341 
    342         if (start < 0) {
    343             start = 0;
    344             end = windowSize;
    345         }
    346 
    347         if (end > this._parentElement.clientWidth) {
    348             end = this._parentElement.clientWidth;
    349             start = end - windowSize;
    350         }
    351         this._setWindowPosition(start, end);
    352336    },
    353337
     
    429413        }
    430414        if (typeof event.wheelDeltaX === "number" && event.wheelDeltaX) {
     415            var offset = Math.round(event.wheelDeltaX * WebInspector.OverviewGrid.WindowScrollSpeedFactor);
    431416            var windowLeft = this._leftResizeElement.offsetLeft + WebInspector.OverviewGrid.ResizerOffset;
    432             var start = windowLeft - Math.round(event.wheelDeltaX * WebInspector.OverviewGrid.WindowScrollSpeedFactor);
    433             this._moveWindow(start);
     417            var windowRight = this._rightResizeElement.offsetLeft + WebInspector.OverviewGrid.ResizerOffset;
     418
     419            if (windowLeft - offset < 0)
     420                offset = windowLeft;
     421
     422            if (windowRight - offset > this._parentElement.clientWidth)
     423                offset = windowRight - this._parentElement.clientWidth;
     424
     425            this._setWindowPosition(windowLeft - offset, windowRight - offset);
     426
    434427            event.preventDefault();
    435428        }
Note: See TracChangeset for help on using the changeset viewer.