Merge pull request #500 from fredj/scrollable
Handler.MouseWheel: don't always block the handler
This commit is contained in:
@@ -93,12 +93,13 @@ OpenLayers.Handler.MouseWheel = OpenLayers.Class(OpenLayers.Handler, {
|
|||||||
|
|
||||||
// Ride up the element's DOM hierarchy to determine if it or any of
|
// Ride up the element's DOM hierarchy to determine if it or any of
|
||||||
// its ancestors was:
|
// its ancestors was:
|
||||||
// * specifically marked as scrollable
|
// * specifically marked as scrollable (CSS overflow property)
|
||||||
// * one of our layer divs
|
// * one of our layer divs or a div marked as scrollable
|
||||||
|
// ('olScrollable' CSS class)
|
||||||
// * the map div
|
// * the map div
|
||||||
//
|
//
|
||||||
var overScrollableDiv = false;
|
var overScrollableDiv = false;
|
||||||
var overLayerDiv = false;
|
var allowScroll = false;
|
||||||
var overMapDiv = false;
|
var overMapDiv = false;
|
||||||
|
|
||||||
var elem = OpenLayers.Event.element(e);
|
var elem = OpenLayers.Event.element(e);
|
||||||
@@ -122,15 +123,18 @@ OpenLayers.Handler.MouseWheel = OpenLayers.Class(OpenLayers.Handler, {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!overLayerDiv) {
|
if (!allowScroll) {
|
||||||
for(var i=0, len=this.map.layers.length; i<len; i++) {
|
allowScroll = OpenLayers.Element.hasClass(elem, 'olScrollable');
|
||||||
// Are we in the layer div? Note that we have two cases
|
if (!allowScroll) {
|
||||||
// here: one is to catch EventPane layers, which have a
|
for (var i = 0, len = this.map.layers.length; i < len; i++) {
|
||||||
// pane above the layer (layer.pane)
|
// Are we in the layer div? Note that we have two cases
|
||||||
if (elem == this.map.layers[i].div
|
// here: one is to catch EventPane layers, which have a
|
||||||
|| elem == this.map.layers[i].pane) {
|
// pane above the layer (layer.pane)
|
||||||
overLayerDiv = true;
|
var layer = this.map.layers[i];
|
||||||
break;
|
if (elem == layer.div || elem == layer.pane) {
|
||||||
|
allowScroll = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -146,7 +150,7 @@ OpenLayers.Handler.MouseWheel = OpenLayers.Class(OpenLayers.Handler, {
|
|||||||
//
|
//
|
||||||
// otherwise
|
// otherwise
|
||||||
//
|
//
|
||||||
// If we are over the layer div:
|
// If we are over the layer div or a 'olScrollable' div:
|
||||||
// * zoom/in out
|
// * zoom/in out
|
||||||
// then
|
// then
|
||||||
// * kill event (so as not to also scroll the page after zooming)
|
// * kill event (so as not to also scroll the page after zooming)
|
||||||
@@ -157,7 +161,7 @@ OpenLayers.Handler.MouseWheel = OpenLayers.Class(OpenLayers.Handler, {
|
|||||||
// layerswitcher or the pan/zoom control)
|
// layerswitcher or the pan/zoom control)
|
||||||
//
|
//
|
||||||
if (!overScrollableDiv && overMapDiv) {
|
if (!overScrollableDiv && overMapDiv) {
|
||||||
if (overLayerDiv) {
|
if (allowScroll) {
|
||||||
var delta = 0;
|
var delta = 0;
|
||||||
if (!e) {
|
if (!e) {
|
||||||
e = window.event;
|
e = window.event;
|
||||||
|
|||||||
Reference in New Issue
Block a user