Skip to content

Commit 940c41b

Browse files
committed
Merge pull request #385 from OpenGeoscience/use-standard-wheelevent
Use the standard wheelevent
2 parents e07ea18 + c68c2ab commit 940c41b

File tree

6 files changed

+27
-16
lines changed

6 files changed

+27
-16
lines changed

Gruntfile.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,6 @@ module.exports = function (grunt) {
213213
files: {
214214
'dist/built/geo.ext.min.js': [
215215
'bower_components/jquery/dist/jquery.js',
216-
'bower_components/jquery-mousewheel/jquery.mousewheel.js',
217216
'bower_components/gl-matrix/dist/gl-matrix.js',
218217
'bower_components/proj4/dist/proj4-src.js',
219218
'bower_components/d3/d3.js',

bower.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
"d3": "~3.3",
1616
"gl-matrix": "~2.1",
1717
"jquery": "~2.1",
18-
"jquery-mousewheel": "^3.1.12",
1918
"proj4": "~2.2",
2019
"bootstrap": "~3.3.0",
2120
"bootswatch": "~3.3"

docs/users.rst

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@ list of libraries used by GeoJS.
3131
+---------------------------+------------+---------------------------+
3232
| `pnltri`_ | 2.1 | GL renderer |
3333
+---------------------------+------------+---------------------------+
34-
| `jQuery mousewheel`_ | 3.1 | Mouse interactor |
35-
+---------------------------+------------+---------------------------+
3634
| `d3`_ | 3.3 | D3 renderer, UI widgets |
3735
+---------------------------+------------+---------------------------+
3836

@@ -45,7 +43,6 @@ list of libraries used by GeoJS.
4543
.. _proj4: http://proj4js.org/
4644
.. _GL matrix: http://glmatrix.net/
4745
.. _pnltri: https://github.com/jahting/pnltri.js/
48-
.. _jQuery mousewheel: https://github.com/jquery/jquery-mousewheel/
4946
.. _d3: http://d3js.org/
5047

5148

examples/layerEvents/main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ $(function () {
9797
// Add a blue box that blocks the mouse wheel.
9898
addEventBox(3 * width / 4, height / 2, 'Blocking wheel')
9999
.style('fill', 'steelblue')
100-
.on('mousewheel', function () {
100+
.on('wheel', function () {
101101
d3.event.stopPropagation();
102102
});
103103

src/core/mapInteractor.js

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ geo.mapInteractor = function (args) {
328328
$node.on('mousemove.geojs', m_this._handleMouseMove);
329329
$node.on('mousedown.geojs', m_this._handleMouseDown);
330330
$node.on('mouseup.geojs', m_this._handleMouseUp);
331-
$node.on('mousewheel.geojs', m_this._handleMouseWheel);
331+
$node.on('wheel.geojs', m_this._handleMouseWheel);
332332
if (m_options.panMoveButton === 'right' ||
333333
m_options.zoomMoveButton === 'right') {
334334
$node.on('contextmenu.geojs', function () { return false; });
@@ -794,8 +794,21 @@ geo.mapInteractor = function (args) {
794794
this._handleMouseWheel = function (evt) {
795795
var zoomFactor, direction;
796796

797-
// In case jquery-mousewheel isn't loaded for some reason
798-
evt.deltaFactor = evt.deltaFactor || 1;
797+
// try to normalize deltas using the wheel event standard:
798+
// https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent
799+
evt.deltaFactor = 1;
800+
if (evt.originalEvent.deltaMode === 1) {
801+
// DOM_DELTA_LINE -- estimate line height
802+
evt.deltaFactor = 12;
803+
} else if (evt.originalEvent.deltaMode === 2) {
804+
// DOM_DELTA_PAGE -- get window height
805+
evt.deltaFactor = $(window).height();
806+
}
807+
808+
// If the browser doesn't support the standard then
809+
// just set the delta's to zero.
810+
evt.deltaX = evt.originalEvent.deltaX || 0;
811+
evt.deltaY = evt.originalEvent.deltaY || 0;
799812

800813
m_this._getMouseModifiers(evt);
801814
evt.deltaX = evt.deltaX * m_options.wheelScaleX * evt.deltaFactor / 120;
@@ -821,13 +834,13 @@ geo.mapInteractor = function (args) {
821834

822835
m_this.map().pan({
823836
x: evt.deltaX,
824-
y: evt.deltaY
837+
y: -evt.deltaY
825838
});
826839

827840
} else if (m_options.zoomWheelEnabled &&
828841
eventMatch('wheel', m_options.zoomWheelModifiers)) {
829842

830-
zoomFactor = evt.deltaY;
843+
zoomFactor = -evt.deltaY;
831844
direction = m_mouse.map;
832845

833846
m_this.map().zoom(
@@ -1014,9 +1027,11 @@ geo.mapInteractor = function (args) {
10141027
ctrlKey: options.modifiers.indexOf('ctrl') >= 0,
10151028
metaKey: options.modifiers.indexOf('meta') >= 0,
10161029
shiftKey: options.modifiers.indexOf('shift') >= 0,
1017-
deltaX: options.wheelDelta.x,
1018-
deltaY: options.wheelDelta.y,
1019-
deltaFactor: 1
1030+
originalEvent: {
1031+
deltaX: options.wheelDelta.x,
1032+
deltaY: options.wheelDelta.y,
1033+
deltaMode: options.wheelMode
1034+
}
10201035
}
10211036
);
10221037
$node.trigger(evt);

testing/test-cases/phantomjs-tests/mapInteractor.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,15 +197,16 @@ describe('mapInteractor', function () {
197197

198198
// trigger a zoom
199199
interactor.simulateEvent(
200-
'mousewheel',
200+
'wheel',
201201
{
202202
wheelDelta: {x: 20, y: -10},
203+
wheelMode: 0
203204
}
204205
);
205206

206207
// check the zoom event was called
207208
expect(map.info.zoom).toBe(1);
208-
expect(map.info.zoomArgs).toBe(2 - 10 / 120);
209+
expect(map.info.zoomArgs).toBe(2 + 10 / 120);
209210
});
210211

211212
it('Test zoom right click event propagation', function () {

0 commit comments

Comments
 (0)