Merge pull request #483 from gregersrygg/master

Improve analog mouse wheel zooming
This commit is contained in:
ahocevar
2012-05-30 14:03:51 -07:00
4 changed files with 26 additions and 6 deletions
+4 -1
View File
@@ -261,8 +261,11 @@ OpenLayers.Control.Navigation = OpenLayers.Class(OpenLayers.Control, {
* deltaZ - {Integer} * deltaZ - {Integer}
*/ */
wheelChange: function(evt, deltaZ) { wheelChange: function(evt, deltaZ) {
if (!this.map.fractionalZoom) {
deltaZ = Math.round(deltaZ);
}
var currentZoom = this.map.getZoom(); var currentZoom = this.map.getZoom();
var newZoom = this.map.getZoom() + Math.round(deltaZ); var newZoom = this.map.getZoom() + deltaZ;
newZoom = Math.max(newZoom, 0); newZoom = Math.max(newZoom, 0);
newZoom = Math.min(newZoom, this.map.getNumZoomLevels()); newZoom = Math.min(newZoom, this.map.getNumZoomLevels());
if (newZoom === currentZoom) { if (newZoom === currentZoom) {
+10 -2
View File
@@ -170,13 +170,21 @@ OpenLayers.Handler.MouseWheel = OpenLayers.Class(OpenLayers.Handler, {
if (!e) { if (!e) {
e = window.event; e = window.event;
} }
if (e.wheelDelta) { if (e.wheelDelta) {
delta = e.wheelDelta/120; delta = e.wheelDelta;
if (window.opera && window.opera.version() < 9.2) { if (window.opera && window.opera.version() < 9.2) {
delta = -delta; delta = -delta;
} }
if (delta % 160 === 0) {
// opera have steps of 160 instead of 120
delta = delta * 0.75;
}
delta = delta / 120;
} else if (e.detail) { } else if (e.detail) {
delta = -e.detail / 3; // detail in Firefox on OS X is 1/3 of Windows
// so force delta 1 / -1
delta = - (e.detail / Math.abs(e.detail));
} }
this.delta = this.delta + delta; this.delta = this.delta + delta;
+9
View File
@@ -8,6 +8,14 @@ Corresponding issues/pull requests:
* https://github.com/openlayers/openlayers/pull/416 * https://github.com/openlayers/openlayers/pull/416
## Better support for analog scroll wheel
Removed rounding of zoom level for maps with fractionalZoom == true. So users with an OS and interface device with analog scroll support will now get smooth zooming.
Corresponding issues/pull requests:
* https://github.com/openlayers/openlayers/pull/483
# Behavior Changes from Past Releases # Behavior Changes from Past Releases
## window.$ is no longer an alias for OpenLayers.Util.getElement ## window.$ is no longer an alias for OpenLayers.Util.getElement
@@ -26,3 +34,4 @@ in such a way you can either
Corresponding issue/pull requests: Corresponding issue/pull requests:
* https://github.com/openlayers/openlayers/pull/423 * https://github.com/openlayers/openlayers/pull/423
+1 -1
View File
@@ -108,7 +108,7 @@
var activated = handler.activate(); var activated = handler.activate();
var delta = 120; var delta = 120;
if (window.opera && window.opera.version() < 9.2) delta = -delta; if (window.opera && window.opera.version() < 9.2) { delta = -delta; }
handler.onWheelEvent({'target':map.layers[0].div, wheelDelta: delta}); handler.onWheelEvent({'target':map.layers[0].div, wheelDelta: delta});
handler.onWheelEvent({'target':map.layers[0].div, wheelDelta: delta}); handler.onWheelEvent({'target':map.layers[0].div, wheelDelta: delta});
t.delay_call(1, function() { t.delay_call(1, function() {