Skip to content

Commit 53fa7f3

Browse files
committed
fix3801 legend touch-scrolling: natural scrolling with no jumping
1 parent 26ea3bc commit 53fa7f3

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

Diff for: src/components/legend/draw.js

+9-5
Original file line numberDiff line numberDiff line change
@@ -277,11 +277,16 @@ module.exports = function draw(gd) {
277277

278278
var eventY0, eventY1, scrollBoxY0;
279279

280-
var getScrollBoxDragY = function(scrollBoxY0, eventY0, eventY1) {
280+
var getScrollBarDragY = function(scrollBoxY0, eventY0, eventY1) {
281281
var y = ((eventY1 - eventY0) / scrollRatio) + scrollBoxY0;
282282
return Lib.constrain(y, 0, scrollBoxYMax);
283283
};
284284

285+
var getNaturalDragY = function(scrollBoxY0, eventY0, eventY1) {
286+
var y = ((eventY0 - eventY1) / scrollRatio) + scrollBoxY0;
287+
return Lib.constrain(y, 0, scrollBoxYMax);
288+
};
289+
285290
// scroll legend by dragging scrollBAR
286291
var scrollBarDrag = d3.behavior.drag()
287292
.on('dragstart', function() {
@@ -301,7 +306,7 @@ module.exports = function draw(gd) {
301306
} else {
302307
eventY1 = e.clientY;
303308
}
304-
scrollBoxY = getScrollBoxDragY(scrollBoxY0, eventY0, eventY1);
309+
scrollBoxY = getScrollBarDragY(scrollBoxY0, eventY0, eventY1);
305310
scrollHandler(scrollBoxY, scrollBarHeight, scrollRatio);
306311
});
307312
scrollBar.call(scrollBarDrag);
@@ -319,9 +324,8 @@ module.exports = function draw(gd) {
319324
var e = d3.event.sourceEvent;
320325
if(e.type === 'touchmove') {
321326
eventY1 = e.changedTouches[0].clientY;
322-
scrollBoxY = getScrollBoxDragY(scrollBoxY0, eventY0, eventY1);
323-
var naturalScrollBoxY = scrollBoxYMax - scrollBoxY; // inverted for natural-scroll
324-
scrollHandler(naturalScrollBoxY, scrollBarHeight, scrollRatio);
327+
scrollBoxY = getNaturalDragY(scrollBoxY0, eventY0, eventY1);
328+
scrollHandler(scrollBoxY, scrollBarHeight, scrollRatio);
325329
}
326330
});
327331
scrollBox.call(scrollBoxTouchDrag);

0 commit comments

Comments
 (0)