Index: samples/o3d-webgl/client.js |
=================================================================== |
--- samples/o3d-webgl/client.js (revision 49133) |
+++ samples/o3d-webgl/client.js (working copy) |
@@ -840,17 +840,23 @@ |
* Wraps a user's event callback with one that properly computes |
* relative coordinates for the event. |
* @param {!o3d.EventCallback} handler Function to call on event. |
+ * @param {boolean} doCancelEvent If event should be canceled after callback. |
* @return {!o3d.EventCallback} Wrapped handler function. |
* @private |
*/ |
-o3d.Client.wrapEventCallback_ = function(handler) { |
+o3d.Client.wrapEventCallback_ = function(handler, doCancelEvent) { |
return function(event) { |
event = o3d.Client.getEvent_(event); |
var info = o3d.Client.getEventInfo_(event); |
var relativeCoords = o3d.Client.getRelativeCoordinates_(info); |
event.x = relativeCoords.x; |
event.y = relativeCoords.y; |
+ // Invert value to meet contract for deltaY. @see event.js. |
+ event.deltaY = -info.wheel; |
handler(event); |
+ if (doCancelEvent) { |
+ o3djs.event.cancel(event); |
+ } |
}; |
}; |
@@ -869,13 +875,20 @@ |
var listener = this.gl.hack_canvas; |
// TODO(petersont): Figure out a way for a canvas to listen to a key event |
// directly. |
+ |
+ var isWheelEvent = type == 'wheel'; |
var forKeyEvent = type.substr(0, 3) == 'key'; |
if (forKeyEvent) { |
listener = document; |
} else { |
- handler = o3d.Client.wrapEventCallback_(handler); |
+ handler = o3d.Client.wrapEventCallback_(handler, isWheelEvent); |
} |
- listener.addEventListener(type, handler, true); |
+ if (isWheelEvent) { |
+ listener.addEventListener('DOMMouseScroll', handler, true); |
+ listener.addEventListener('mousewheel', handler, true); |
+ } else { |
+ listener.addEventListener(type, handler, true); |
+ } |
}; |
@@ -885,11 +898,21 @@ |
*/ |
o3d.Client.prototype.clearEventCallback = |
function(type) { |
+ //TODO(petersont): Same as TODO in setEventCallback above. |
+ var listener = this.gl.hack_canvas; |
+ |
+ var isWheelEvent = type == 'wheel'; |
var forKeyEvent = type.substr(0, 3) == 'key'; |
if (forKeyEvent) { |
listener = document; |
} |
- listener.removeEventListener(type); |
+ |
+ if (isWheelEvent) { |
+ listener.removeEventListener('DOMMouseScroll'); |
+ listener.removeEventListener('mousewheel'); |
+ } else { |
+ listener.removeEventListener(type); |
+ } |
}; |