| Index: ui/file_manager/gallery/js/slide_mode.js
|
| diff --git a/ui/file_manager/gallery/js/slide_mode.js b/ui/file_manager/gallery/js/slide_mode.js
|
| index a550d201a91c9d1e8fe7717b7eca3cc60db54a11..1c0ba4a026a02fef7f7154c9c4597d054ffb38b8 100644
|
| --- a/ui/file_manager/gallery/js/slide_mode.js
|
| +++ b/ui/file_manager/gallery/js/slide_mode.js
|
| @@ -1826,6 +1826,13 @@ function TouchHandler(targetElement, slideMode) {
|
| this.touchStarted_ = false;
|
|
|
| /**
|
| + * Whether the element is being clicked now or not.
|
| + * @type {boolean}
|
| + * @private
|
| + */
|
| + this.clickStarted_ = false;
|
| +
|
| + /**
|
| * The swipe action that should happen only once in an operation is already
|
| * done or not.
|
| * @type {boolean}
|
| @@ -1867,6 +1874,11 @@ function TouchHandler(targetElement, slideMode) {
|
| targetElement.ownerDocument.addEventListener('touchmove', onTouchEventBound);
|
| targetElement.ownerDocument.addEventListener('touchend', onTouchEventBound);
|
|
|
| + targetElement.addEventListener('mousedown', this.onMouseDown_.bind(this));
|
| + targetElement.ownerDocument.addEventListener('mousemove',
|
| + this.onMouseMove_.bind(this));
|
| + targetElement.ownerDocument.addEventListener('mouseup',
|
| + this.onMouseUp_.bind(this));
|
| targetElement.addEventListener('mousewheel', this.onMouseWheel_.bind(this));
|
| }
|
|
|
| @@ -2042,6 +2054,13 @@ TouchHandler.prototype.onTouchEvent_ = function(event) {
|
| };
|
|
|
| /**
|
| + * Zoom magnification of one scroll event.
|
| + * @private {number}
|
| + * @const
|
| + */
|
| +TouchHandler.WHEEL_ZOOM_FACTOR = 1.05;
|
| +
|
| +/**
|
| * Handles mouse wheel events.
|
| * @param {!Event} event Wheel event.
|
| * @private
|
| @@ -2049,11 +2068,60 @@ TouchHandler.prototype.onTouchEvent_ = function(event) {
|
| TouchHandler.prototype.onMouseWheel_ = function(event) {
|
| var event = assertInstanceof(event, MouseEvent);
|
| var viewport = this.slideMode_.getViewport();
|
| - if (!this.enabled_ || !viewport.isZoomed())
|
| + if (!this.enabled_)
|
| + return;
|
| +
|
| + this.stopOperation();
|
| + this.lastZoom_ = viewport.getZoom();
|
| + var zoom = this.lastZoom_;
|
| + if (event.wheelDeltaY > 0) {
|
| + zoom *= TouchHandler.WHEEL_ZOOM_FACTOR;
|
| + } else {
|
| + zoom /= TouchHandler.WHEEL_ZOOM_FACTOR;
|
| + }
|
| + viewport.setZoom(zoom);
|
| + this.slideMode_.imageView_.applyViewportChange();
|
| +};
|
| +
|
| +/**
|
| + * Handles mouse down events.
|
| + * @param {!Event} event Wheel event.
|
| + * @private
|
| + */
|
| +TouchHandler.prototype.onMouseDown_ = function(event) {
|
| + var event = assertInstanceof(event, MouseEvent);
|
| + var viewport = this.slideMode_.getViewport();
|
| + if (!this.enabled_ || event.button !== 0)
|
| + return;
|
| + this.clickStarted_ = true;
|
| +};
|
| +
|
| +/**
|
| + * Handles mouse move events.
|
| + * @param {!Event} event Wheel event.
|
| + * @private
|
| + */
|
| +TouchHandler.prototype.onMouseMove_ = function(event) {
|
| + var event = assertInstanceof(event, MouseEvent);
|
| + var viewport = this.slideMode_.getViewport();
|
| + if (!this.enabled_ || !this.clickStarted_)
|
| return;
|
| this.stopOperation();
|
| viewport.setOffset(
|
| - viewport.getOffsetX() + event.wheelDeltaX,
|
| - viewport.getOffsetY() + event.wheelDeltaY);
|
| - this.slideMode_.applyViewportChange();
|
| + viewport.getOffsetX() +
|
| + (/** @type {{movementX: number}} */(event)).movementX,
|
| + viewport.getOffsetY() +
|
| + (/** @type {{movementY: number}} */(event)).movementY);
|
| + this.slideMode_.imageView_.applyViewportChange();
|
| +};
|
| +
|
| +/**
|
| + * Handles mouse up events.
|
| + * @param {!Event} event Wheel event.
|
| + * @private
|
| + */
|
| +TouchHandler.prototype.onMouseUp_ = function(event) {
|
| + if (event.button !== 0)
|
| + return;
|
| + this.clickStarted_ = false;
|
| };
|
|
|