From 1b25ffc9b391efd862d16817e8181fcf3fde7e7a Mon Sep 17 00:00:00 2001 From: derek1906 Date: Sat, 3 Jan 2015 19:45:37 -0600 Subject: [PATCH 1/3] Fix Scroll Lock --- js/views/scrollView.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/js/views/scrollView.js b/js/views/scrollView.js index 9632fd53dde..10a91862f38 100644 --- a/js/views/scrollView.js +++ b/js/views/scrollView.js @@ -731,6 +731,7 @@ ionic.views.Scroll = ionic.views.View.inherit({ self.__isSelectable = true; self.__enableScrollY = true; self.__hasStarted = true; + self.__scrollLockFix = {direction: null}; self.doTouchStart(getEventTouches(e), e.timeStamp); e.preventDefault(); }; @@ -772,7 +773,15 @@ ionic.views.Scroll = ionic.views.View.inherit({ } } - self.doTouchMove(getEventTouches(e), e.timeStamp, e.scale); + if(self.options.locking){ + if(!self.__scrollLockFix.direction){ + self.__scrollLockFix.direction = Math.abs(e.touches[0].pageX - self.__initialTouchLeft) > Math.abs(e.touches[0].pageY - self.__initialTouchTop); + } + var dir = self.__scrollLockFix.direction; + self.doTouchMove([{pageX: dir ? e.touches[0].pageX : self.__initialTouchLeft, pageY: dir ? self.__initialTouchTop : e.touches[0].pageY}], e.timeStamp, e.scale); + }else{ + self.doTouchMove(getEventTouches(e), e.timeStamp, e.scale); + } self.__isDown = true; }; From f51736542874c0c0820e08264fe515f2c24d10fe Mon Sep 17 00:00:00 2001 From: derek1906 Date: Sun, 4 Jan 2015 02:19:59 -0600 Subject: [PATCH 2/3] Fixed the condition for detecting the existance of the direction porperty; Added minimum length before fix occur --- js/views/scrollView.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/js/views/scrollView.js b/js/views/scrollView.js index 10a91862f38..1d51a3f1485 100644 --- a/js/views/scrollView.js +++ b/js/views/scrollView.js @@ -731,7 +731,7 @@ ionic.views.Scroll = ionic.views.View.inherit({ self.__isSelectable = true; self.__enableScrollY = true; self.__hasStarted = true; - self.__scrollLockFix = {direction: null}; + self.__scrollLockFix = {direction: null, doFix: false}; self.doTouchStart(getEventTouches(e), e.timeStamp); e.preventDefault(); }; @@ -773,15 +773,21 @@ ionic.views.Scroll = ionic.views.View.inherit({ } } - if(self.options.locking){ - if(!self.__scrollLockFix.direction){ - self.__scrollLockFix.direction = Math.abs(e.touches[0].pageX - self.__initialTouchLeft) > Math.abs(e.touches[0].pageY - self.__initialTouchTop); + if(self.options.locking && self.__scrollLockFix.direction === null){ + var detect = 5, + dx = Math.abs(e.touches[0].pageX - self.__initialTouchLeft), dy = Math.abs(e.touches[0].pageY - self.__initialTouchTop); + if(dx > detect || dy > detect){ + self.__scrollLockFix.direction = dx > dy; + self.__scrollLockFix.doFix = true; } - var dir = self.__scrollLockFix.direction; + } + var dir = self.__scrollLockFix.direction; + if(self.__scrollLockFix.doFix){ self.doTouchMove([{pageX: dir ? e.touches[0].pageX : self.__initialTouchLeft, pageY: dir ? self.__initialTouchTop : e.touches[0].pageY}], e.timeStamp, e.scale); }else{ self.doTouchMove(getEventTouches(e), e.timeStamp, e.scale); } + self.__isDown = true; }; From dd3216e24912d42e845bf18205235ad9b8bd9afb Mon Sep 17 00:00:00 2001 From: derek1906 Date: Sun, 4 Jan 2015 16:59:16 -0600 Subject: [PATCH 3/3] Some fixes; Add detection for isScrolling --- js/views/scrollView.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/js/views/scrollView.js b/js/views/scrollView.js index 1d51a3f1485..4aa22826195 100644 --- a/js/views/scrollView.js +++ b/js/views/scrollView.js @@ -731,7 +731,7 @@ ionic.views.Scroll = ionic.views.View.inherit({ self.__isSelectable = true; self.__enableScrollY = true; self.__hasStarted = true; - self.__scrollLockFix = {direction: null, doFix: false}; + if(!ionic.scroll.isScrolling) self.__scrollLockFix = {direction: null, doFix: false}; self.doTouchStart(getEventTouches(e), e.timeStamp); e.preventDefault(); }; @@ -773,7 +773,7 @@ ionic.views.Scroll = ionic.views.View.inherit({ } } - if(self.options.locking && self.__scrollLockFix.direction === null){ + if(self.options.locking && !self.__scrollLockFix.doFix){ var detect = 5, dx = Math.abs(e.touches[0].pageX - self.__initialTouchLeft), dy = Math.abs(e.touches[0].pageY - self.__initialTouchTop); if(dx > detect || dy > detect){ @@ -781,9 +781,12 @@ ionic.views.Scroll = ionic.views.View.inherit({ self.__scrollLockFix.doFix = true; } } - var dir = self.__scrollLockFix.direction; if(self.__scrollLockFix.doFix){ - self.doTouchMove([{pageX: dir ? e.touches[0].pageX : self.__initialTouchLeft, pageY: dir ? self.__initialTouchTop : e.touches[0].pageY}], e.timeStamp, e.scale); + var dir = self.__scrollLockFix.direction; + self.doTouchMove([{ + pageX: dir ? e.touches[0].pageX : self.__initialTouchLeft, + pageY: dir ? self.__initialTouchTop : e.touches[0].pageY + }], e.timeStamp, e.scale); }else{ self.doTouchMove(getEventTouches(e), e.timeStamp, e.scale); }