Title: [113591] trunk/Source/WebCore
Revision
113591
Author
[email protected]
Date
2012-04-09 10:36:53 -0700 (Mon, 09 Apr 2012)

Log Message

Web Inspector: zoom on vertical mousewheel in Timeline overview
https://bugs.webkit.org/show_bug.cgi?id=83379

Reviewed by Pavel Feldman.

- added support for zooming around mouse cursor upon mousewheel event;
- handle mousewheel event by _onMouseWheel, not scrollWindow, so we only zoom on events internal to overview.

* inspector/front-end/TimelineOverviewPane.js:
(WebInspector.TimelineOverviewWindow):
(WebInspector.TimelineOverviewWindow.prototype._endWindowSelectorDragging):
(WebInspector.TimelineOverviewWindow.prototype._onMouseWheel):
(WebInspector.TimelineOverviewWindow.prototype._zoom):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (113590 => 113591)


--- trunk/Source/WebCore/ChangeLog	2012-04-09 17:26:20 UTC (rev 113590)
+++ trunk/Source/WebCore/ChangeLog	2012-04-09 17:36:53 UTC (rev 113591)
@@ -1,3 +1,19 @@
+2012-04-06  Andrey Kosyakov  <[email protected]>
+
+        Web Inspector: zoom on vertical mousewheel in Timeline overview
+        https://bugs.webkit.org/show_bug.cgi?id=83379
+
+        Reviewed by Pavel Feldman.
+
+        - added support for zooming around mouse cursor upon mousewheel event;
+        - handle mousewheel event by _onMouseWheel, not scrollWindow, so we only zoom on events internal to overview.
+
+        * inspector/front-end/TimelineOverviewPane.js:
+        (WebInspector.TimelineOverviewWindow):
+        (WebInspector.TimelineOverviewWindow.prototype._endWindowSelectorDragging):
+        (WebInspector.TimelineOverviewWindow.prototype._onMouseWheel):
+        (WebInspector.TimelineOverviewWindow.prototype._zoom):
+
 2012-04-09  Bill Budge  <[email protected]>
 
         Cross-origin preflight request should not include credentials.

Modified: trunk/Source/WebCore/inspector/front-end/TimelineOverviewPane.js (113590 => 113591)


--- trunk/Source/WebCore/inspector/front-end/TimelineOverviewPane.js	2012-04-09 17:26:20 UTC (rev 113590)
+++ trunk/Source/WebCore/inspector/front-end/TimelineOverviewPane.js	2012-04-09 17:36:53 UTC (rev 113591)
@@ -397,7 +397,7 @@
     this.windowRight = 1.0;
 
     this._parentElement.addEventListener("mousedown", this._dragWindow.bind(this), true);
-    this._parentElement.addEventListener("mousewheel", this.scrollWindow.bind(this), true);
+    this._parentElement.addEventListener("mousewheel", this._onMouseWheel.bind(this), true);
     this._parentElement.addEventListener("dblclick", this._resizeWindowMaximum.bind(this), true);
 
     this._overviewWindowElement = document.createElement("div");
@@ -487,7 +487,7 @@
         WebInspector.elementDragEnd(event);
         var window = this._overviewWindowSelector._close(event.pageX - this._parentElement.offsetLeft);
         delete this._overviewWindowSelector;
-        if (window.end === window.start) { // Click, not drag.\
+        if (window.end === window.start) { // Click, not drag.
             var middle = window.end;
             window.start = Math.max(0, middle - WebInspector.TimelineOverviewPane.MinSelectableSize / 2);
             window.end = Math.min(this._parentElement.clientWidth, middle + WebInspector.TimelineOverviewPane.MinSelectableSize / 2);
@@ -570,6 +570,34 @@
         WebInspector.elementDragEnd(event);
     },
 
+    _onMouseWheel: function(event)
+    {
+        const zoomFactor = 1.1;
+        const mouseWheelZoomSpeed = 1 / 120;
+
+        if (typeof event.wheelDeltaY === "number" && event.wheelDeltaY !== 0) {
+            var referencePoint = event.pageX - this._parentElement.offsetLeft;
+            this._zoom(Math.pow(zoomFactor, -event.wheelDeltaY * mouseWheelZoomSpeed), referencePoint);
+        }
+        this.scrollWindow(event);
+    },
+
+    /**
+     * @param {number} factor
+     * @param {number} referencePoint
+     */
+    _zoom: function(factor, referencePoint)
+    {
+        var left = this._leftResizeElement.offsetLeft + WebInspector.TimelineOverviewPane.ResizerOffset;
+        var right = this._rightResizeElement.offsetLeft + WebInspector.TimelineOverviewPane.ResizerOffset;
+
+        if (factor < 1 && factor * (right - left) < WebInspector.TimelineOverviewPane.MinSelectableSize)
+            return;
+        left = Math.max(0, referencePoint + (left - referencePoint) * factor);
+        right = Math.min(this._parentElement.clientWidth, referencePoint + (right - referencePoint) * factor);
+        this._setWindowPosition(left, right);
+    },
+
     scrollWindow: function(event)
     {
         if (typeof event.wheelDeltaX === "number" && event.wheelDeltaX !== 0) {
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to