Skip to content

Commit

Permalink
Merge pull request #385 from OpenGeoscience/use-standard-wheelevent
Browse files Browse the repository at this point in the history
Use the standard wheelevent
  • Loading branch information
jbeezley committed Apr 29, 2015
2 parents e07ea18 + c68c2ab commit 940c41b
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 16 deletions.
1 change: 0 additions & 1 deletion Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,6 @@ module.exports = function (grunt) {
files: {
'dist/built/geo.ext.min.js': [
'bower_components/jquery/dist/jquery.js',
'bower_components/jquery-mousewheel/jquery.mousewheel.js',
'bower_components/gl-matrix/dist/gl-matrix.js',
'bower_components/proj4/dist/proj4-src.js',
'bower_components/d3/d3.js',
Expand Down
1 change: 0 additions & 1 deletion bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
"d3": "~3.3",
"gl-matrix": "~2.1",
"jquery": "~2.1",
"jquery-mousewheel": "^3.1.12",
"proj4": "~2.2",
"bootstrap": "~3.3.0",
"bootswatch": "~3.3"
Expand Down
3 changes: 0 additions & 3 deletions docs/users.rst
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ list of libraries used by GeoJS.
+---------------------------+------------+---------------------------+
| `pnltri`_ | 2.1 | GL renderer |
+---------------------------+------------+---------------------------+
| `jQuery mousewheel`_ | 3.1 | Mouse interactor |
+---------------------------+------------+---------------------------+
| `d3`_ | 3.3 | D3 renderer, UI widgets |
+---------------------------+------------+---------------------------+

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


Expand Down
2 changes: 1 addition & 1 deletion examples/layerEvents/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ $(function () {
// Add a blue box that blocks the mouse wheel.
addEventBox(3 * width / 4, height / 2, 'Blocking wheel')
.style('fill', 'steelblue')
.on('mousewheel', function () {
.on('wheel', function () {
d3.event.stopPropagation();
});

Expand Down
31 changes: 23 additions & 8 deletions src/core/mapInteractor.js
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ geo.mapInteractor = function (args) {
$node.on('mousemove.geojs', m_this._handleMouseMove);
$node.on('mousedown.geojs', m_this._handleMouseDown);
$node.on('mouseup.geojs', m_this._handleMouseUp);
$node.on('mousewheel.geojs', m_this._handleMouseWheel);
$node.on('wheel.geojs', m_this._handleMouseWheel);
if (m_options.panMoveButton === 'right' ||
m_options.zoomMoveButton === 'right') {
$node.on('contextmenu.geojs', function () { return false; });
Expand Down Expand Up @@ -794,8 +794,21 @@ geo.mapInteractor = function (args) {
this._handleMouseWheel = function (evt) {
var zoomFactor, direction;

// In case jquery-mousewheel isn't loaded for some reason
evt.deltaFactor = evt.deltaFactor || 1;
// try to normalize deltas using the wheel event standard:
// https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent
evt.deltaFactor = 1;
if (evt.originalEvent.deltaMode === 1) {
// DOM_DELTA_LINE -- estimate line height
evt.deltaFactor = 12;
} else if (evt.originalEvent.deltaMode === 2) {
// DOM_DELTA_PAGE -- get window height
evt.deltaFactor = $(window).height();
}

// If the browser doesn't support the standard then
// just set the delta's to zero.
evt.deltaX = evt.originalEvent.deltaX || 0;
evt.deltaY = evt.originalEvent.deltaY || 0;

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

m_this.map().pan({
x: evt.deltaX,
y: evt.deltaY
y: -evt.deltaY
});

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

zoomFactor = evt.deltaY;
zoomFactor = -evt.deltaY;
direction = m_mouse.map;

m_this.map().zoom(
Expand Down Expand Up @@ -1014,9 +1027,11 @@ geo.mapInteractor = function (args) {
ctrlKey: options.modifiers.indexOf('ctrl') >= 0,
metaKey: options.modifiers.indexOf('meta') >= 0,
shiftKey: options.modifiers.indexOf('shift') >= 0,
deltaX: options.wheelDelta.x,
deltaY: options.wheelDelta.y,
deltaFactor: 1
originalEvent: {
deltaX: options.wheelDelta.x,
deltaY: options.wheelDelta.y,
deltaMode: options.wheelMode
}
}
);
$node.trigger(evt);
Expand Down
5 changes: 3 additions & 2 deletions testing/test-cases/phantomjs-tests/mapInteractor.js
Original file line number Diff line number Diff line change
Expand Up @@ -197,15 +197,16 @@ describe('mapInteractor', function () {

// trigger a zoom
interactor.simulateEvent(
'mousewheel',
'wheel',
{
wheelDelta: {x: 20, y: -10},
wheelMode: 0
}
);

// check the zoom event was called
expect(map.info.zoom).toBe(1);
expect(map.info.zoomArgs).toBe(2 - 10 / 120);
expect(map.info.zoomArgs).toBe(2 + 10 / 120);
});

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

0 comments on commit 940c41b

Please sign in to comment.