DevTools: [Responsive design] shift-drag resize widget for more precise dragging

This patch makes it possible to shift-drag resize widgets on responsive
design page to slow down their movement.

BUG=380190

Review URL: https://codereview.chromium.org/312813002

git-svn-id: svn://svn.chromium.org/blink/trunk@175473 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 8a6f34cf
...@@ -166,6 +166,7 @@ WebInspector.ResponsiveDesignView.prototype = { ...@@ -166,6 +166,7 @@ WebInspector.ResponsiveDesignView.prototype = {
_onResizeStart: function(event) _onResizeStart: function(event)
{ {
var available = this.availableDipSize(); var available = this.availableDipSize();
this._slowPositionStart = null;
this._resizeStartSize = event.target.isVertical() ? (this._dipHeight || available.height) : (this._dipWidth || available.width); this._resizeStartSize = event.target.isVertical() ? (this._dipHeight || available.height) : (this._dipWidth || available.width);
}, },
...@@ -174,8 +175,10 @@ WebInspector.ResponsiveDesignView.prototype = { ...@@ -174,8 +175,10 @@ WebInspector.ResponsiveDesignView.prototype = {
*/ */
_onResizeUpdate: function(event) _onResizeUpdate: function(event)
{ {
var cssOffset = event.data.currentPosition - event.data.startPosition; if (event.data.shiftKey !== !!this._slowPositionStart)
var dipOffset = cssOffset * WebInspector.zoomManager.zoomFactor(); this._slowPositionStart = event.data.shiftKey ? event.data.currentPosition : null;
var cssOffset = this._slowPositionStart ? (event.data.currentPosition - this._slowPositionStart) / 10 + this._slowPositionStart - event.data.startPosition : event.data.currentPosition - event.data.startPosition;
var dipOffset = Math.round(cssOffset * WebInspector.zoomManager.zoomFactor());
var newSize = Math.max(this._resizeStartSize + dipOffset, 1); var newSize = Math.max(this._resizeStartSize + dipOffset, 1);
var requested = new Size(this._dipWidth, this._dipHeight); var requested = new Size(this._dipWidth, this._dipHeight);
if (event.target.isVertical()) if (event.target.isVertical())
......
...@@ -17,9 +17,9 @@ WebInspector.ResizerWidget = function() ...@@ -17,9 +17,9 @@ WebInspector.ResizerWidget = function()
}; };
WebInspector.ResizerWidget.Events = { WebInspector.ResizerWidget.Events = {
ResizeStart: "ResizeStart", // Data: {{startPosition: number, currentPosition: number}}. ResizeStart: "ResizeStart",
ResizeUpdate: "ResizeUpdate", // Data: {{startPosition: number, currentPosition: number}}. ResizeUpdate: "ResizeUpdate",
ResizeEnd: "ResizeEnd" // No data. ResizeEnd: "ResizeEnd"
}; };
WebInspector.ResizerWidget.prototype = { WebInspector.ResizerWidget.prototype = {
...@@ -138,7 +138,7 @@ WebInspector.ResizerWidget.prototype = { ...@@ -138,7 +138,7 @@ WebInspector.ResizerWidget.prototype = {
} }
var position = this._isVertical ? event.pageY : event.pageX; var position = this._isVertical ? event.pageY : event.pageX;
this.dispatchEventToListeners(WebInspector.ResizerWidget.Events.ResizeUpdate, { startPosition: this._startPosition, currentPosition: position }); this.dispatchEventToListeners(WebInspector.ResizerWidget.Events.ResizeUpdate, { startPosition: this._startPosition, currentPosition: position, shiftKey: event.shiftKey });
event.preventDefault(); event.preventDefault();
return false; // Continue drag. return false; // Continue drag.
}, },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment