Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Unified Diff: ui/file_manager/gallery/js/slide_mode.js

Issue 1673703002: support zoom and move image by mouse. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nits Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
};
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698