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

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: remove dups and fix for closure compiler. 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..5e1643d05706e57a70c39e7f16358040612c29b7 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,58 @@ 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();
- viewport.setOffset(
- viewport.getOffsetX() + event.wheelDeltaX,
- viewport.getOffsetY() + event.wheelDeltaY);
- this.slideMode_.applyViewportChange();
+ this.lastZoom_ = viewport.getZoom();
+ var zoom = this.lastZoom_;
+ if (event.wheelDeltaY > 0) {
+ zoom = zoom * TouchHandler.WHEEL_ZOOM_FACTOR;
+ } else {
+ zoom = 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_)
hirono 2016/02/09 17:57:44 Maybe we should check button property of event.
ryoh 2016/02/10 01:49:05 Done.
+ return;
+ this.clickStarted_ = true;
+}
hirono 2016/02/09 17:57:44 nit: add ;
ryoh 2016/02/10 01:49:05 Done.
+
+/**
+ * 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;
+ viewport.setOffset(
+ viewport.getOffsetX() +
+ (/** @type {{movementX: number}} */(event)).movementX,
hirono 2016/02/09 17:57:44 For this CL, it's fine. But maybe we can extend th
ryoh 2016/02/10 01:49:05 The similar probrem occured at set-wallpaper pactc
+ viewport.getOffsetY() +
+ (/** @type {{movementY: number}} */(event)).movementY);
+ this.slideMode_.imageView_.applyViewportChange();
+ console.log(event);
hirono 2016/02/09 17:57:44 nit: Please remove debug log.
ryoh 2016/02/10 01:49:05 Done.
+}
hirono 2016/02/09 17:57:44 ditto
+
+/**
+ * Handles mouse up events.
+ * @param {!Event} event Wheel event.
+ * @private
+ */
+TouchHandler.prototype.onMouseUp_ = function(event) {
+ this.clickStarted_ = false;
+}
hirono 2016/02/09 17:57:44 ditto
« 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