From 5130007e337ea158b0a7f527c95d1e6eff253d73 Mon Sep 17 00:00:00 2001 From: norami Date: Mon, 16 Jan 2017 15:41:47 +0900 Subject: [PATCH] fix: Multiple input devices problem in scrollView In scrollView, combination use of mouse and touch device is disabled inappropriately, while it is enabled in the other components. This commit fixes the problem. https://github.com/driftyco/ionic-v1/issues/37 --- js/views/scrollView.js | 80 ++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 42 deletions(-) diff --git a/js/views/scrollView.js b/js/views/scrollView.js index 74507e6c2..51a67b817 100644 --- a/js/views/scrollView.js +++ b/js/views/scrollView.js @@ -888,7 +888,6 @@ ionic.views.Scroll = ionic.views.View.inherit({ document.addEventListener("touchmove", self.touchMove, false); document.addEventListener("touchend", self.touchEnd, false); document.addEventListener("touchcancel", self.touchEnd, false); - document.addEventListener("wheel", self.mouseWheel, false); } else if (window.navigator.pointerEnabled) { // Pointer Events @@ -897,7 +896,6 @@ ionic.views.Scroll = ionic.views.View.inherit({ document.addEventListener("pointermove", self.touchMove, false); document.addEventListener("pointerup", self.touchEnd, false); document.addEventListener("pointercancel", self.touchEnd, false); - document.addEventListener("wheel", self.mouseWheel, false); } else if (window.navigator.msPointerEnabled) { // IE10, WP8 (Pointer Events) @@ -906,57 +904,55 @@ ionic.views.Scroll = ionic.views.View.inherit({ document.addEventListener("MSPointerMove", self.touchMove, false); document.addEventListener("MSPointerUp", self.touchEnd, false); document.addEventListener("MSPointerCancel", self.touchEnd, false); - document.addEventListener("wheel", self.mouseWheel, false); - } else { - // Mouse Events - var mousedown = false; + } + // Mouse Events + var mousedown = false; - self.mouseDown = function(e) { - if ( ionic.tap.ignoreScrollStart(e) || e.target.tagName === 'SELECT' ) { - return; - } - self.doTouchStart(getEventTouches(e), e.timeStamp); + self.mouseDown = function(e) { + if ( ionic.tap.ignoreScrollStart(e) || e.target.tagName === 'SELECT' ) { + return; + } + self.doTouchStart(getEventTouches(e), e.timeStamp); - if ( !ionic.tap.isTextInput(e.target) ) { - e.preventDefault(); - } - mousedown = true; - }; + if ( !ionic.tap.isTextInput(e.target) ) { + e.preventDefault(); + } + mousedown = true; + }; - self.mouseMove = function(e) { - if (self.options.freeze || !mousedown || (!mousedown && e.defaultPrevented)) { - return; - } + self.mouseMove = function(e) { + if (self.options.freeze || !mousedown || (!mousedown && e.defaultPrevented)) { + return; + } - self.doTouchMove(getEventTouches(e), e.timeStamp); + self.doTouchMove(getEventTouches(e), e.timeStamp); - mousedown = true; - }; + mousedown = true; + }; - self.mouseMoveBubble = function(e) { - if (mousedown && self.options.preventDefault) { - e.preventDefault(); - } - }; + self.mouseMoveBubble = function(e) { + if (mousedown && self.options.preventDefault) { + e.preventDefault(); + } + }; - self.mouseUp = function(e) { - if (!mousedown) { - return; - } + self.mouseUp = function(e) { + if (!mousedown) { + return; + } - self.doTouchEnd(e, e.timeStamp); + self.doTouchEnd(e, e.timeStamp); - mousedown = false; - }; + mousedown = false; + }; - container.addEventListener("mousedown", self.mouseDown, false); - if(self.options.preventDefault) container.addEventListener("mousemove", self.mouseMoveBubble, false); - document.addEventListener("mousemove", self.mouseMove, false); - document.addEventListener("mouseup", self.mouseUp, false); - document.addEventListener('mousewheel', self.mouseWheel, false); - document.addEventListener('wheel', self.mouseWheel, false); - } + container.addEventListener("mousedown", self.mouseDown, false); + if(self.options.preventDefault) container.addEventListener("mousemove", self.mouseMoveBubble, false); + document.addEventListener("mousemove", self.mouseMove, false); + document.addEventListener("mouseup", self.mouseUp, false); + document.addEventListener('mousewheel', self.mouseWheel, false); + document.addEventListener('wheel', self.mouseWheel, false); }, __cleanup: function() {