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

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: 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..9e15dcfd2d7c6bf543c794336d7f01a9cadced25 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));
}
@@ -2049,11 +2061,79 @@ 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 * 1.05;
+ } else {
+ zoom = zoom / 1.05;
+ }
+ viewport.setZoom(zoom);
+ this.slideMode_.imageView_.applyViewportChange();
+};
+
+/**
+ * Handles mouse wheel events.
+ * @param {!Event} event Wheel event.
+ * @private
+ */
+TouchHandler.prototype.onMouseWheel_ = function(event) {
hirono 2016/02/06 07:27:59 nit: It looks we have two onMouseWheel_.
ryoh 2016/02/08 04:58:01 Done.
+ var event = assertInstanceof(event, MouseEvent);
+ var viewport = this.slideMode_.getViewport();
+ if (!this.enabled_)
+ return;
+
+ this.stopOperation();
+ this.lastZoom_ = viewport.getZoom();
+ var zoom = this.lastZoom_;
+ if (event.wheelDeltaY > 0) {
+ zoom = zoom * 1.05;
+ } else {
+ zoom = zoom / 1.05;
+ }
+ 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_)
+ 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;
+ viewport.setOffset(
+ viewport.getOffsetX() + event.movementX,
+ viewport.getOffsetY() + event.movementY);
+ this.slideMode_.imageView_.applyViewportChange();
+ console.log(event);
+}
+
+/**
+ * Handles mouse up events.
+ * @param {!Event} event Wheel event.
+ * @private
+ */
+TouchHandler.prototype.onMouseUp_ = function(event) {
+ 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