aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjonas echterhoff <jonas@unity3d.com>2014-05-08 15:03:15 +0200
committerjonas echterhoff <jonas@unity3d.com>2014-05-08 15:03:15 +0200
commit61f7c9a8dce8421494a01ec17bfc15de19b1b37e (patch)
tree0f4f22b4ff82e2ed1b63922d186dd79a3f00a779
parent82ecd38e7a518e1086d5db355522287d546dcbf7 (diff)
Make scroll wheel work with SDL
-rw-r--r--src/library_sdl.js28
-rw-r--r--src/struct_info.json8
2 files changed, 21 insertions, 15 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js
index 077f72eb..429c3afa 100644
--- a/src/library_sdl.js
+++ b/src/library_sdl.js
@@ -541,21 +541,12 @@ var LibrarySDL = {
event.preventDefault();
}
- if (event.type == 'DOMMouseScroll' || event.type == 'mousewheel') {
- var button = Browser.getMouseWheelDelta(event) > 0 ? 4 : 3;
- var event2 = {
- type: 'mousedown',
- button: button,
- pageX: event.pageX,
- pageY: event.pageY
- };
- SDL.events.push(event2);
- event = {
- type: 'mouseup',
- button: button,
- pageX: event.pageX,
- pageY: event.pageY
- };
+ if (event.type == 'DOMMouseScroll') {
+ SDL.events.push({
+ type: 'mousewheel',
+ wheelDelta: -event.detail,
+ });
+ break;
} else if (event.type == 'mousedown') {
SDL.DOMButtons[event.button] = 1;
SDL.events.push({
@@ -787,6 +778,12 @@ var LibrarySDL = {
}
break;
}
+ case 'mousewheel': {
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_MouseWheelEvent.type, 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}};
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_MouseWheelEvent.x, '0', 'i32') }}};
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_MouseWheelEvent.y, 'Browser.getMouseWheelDelta(event)', 'i32') }}};
+ break;
+ }
case 'touchstart': case 'touchend': case 'touchmove': {
var touch = event.touch;
var w = Module['canvas'].width;
@@ -1064,6 +1061,7 @@ var LibrarySDL = {
SDL.DOMEventToSDLEvent['mousedown'] = 0x401 /* SDL_MOUSEBUTTONDOWN */;
SDL.DOMEventToSDLEvent['mouseup'] = 0x402 /* SDL_MOUSEBUTTONUP */;
SDL.DOMEventToSDLEvent['mousemove'] = 0x400 /* SDL_MOUSEMOTION */;
+ SDL.DOMEventToSDLEvent['mousewheel'] = 0x403 /* SDL_MOUSEWHEEL */;
SDL.DOMEventToSDLEvent['touchstart'] = 0x700 /* SDL_FINGERDOWN */;
SDL.DOMEventToSDLEvent['touchend'] = 0x701 /* SDL_FINGERUP */;
SDL.DOMEventToSDLEvent['touchmove'] = 0x702 /* SDL_FINGERMOTION */;
diff --git a/src/struct_info.json b/src/struct_info.json
index f762bf2b..9aeeb283 100644
--- a/src/struct_info.json
+++ b/src/struct_info.json
@@ -969,6 +969,14 @@
"x",
"y"
],
+ "SDL_MouseWheelEvent": [
+ "type",
+ "timestamp",
+ "windowID",
+ "which",
+ "x",
+ "y"
+ ],
"SDL_JoyAxisEvent": [
"type",
"which",