diff options
author | jonas echterhoff <jonas@unity3d.com> | 2014-05-08 15:03:15 +0200 |
---|---|---|
committer | jonas echterhoff <jonas@unity3d.com> | 2014-05-08 15:03:15 +0200 |
commit | 61f7c9a8dce8421494a01ec17bfc15de19b1b37e (patch) | |
tree | 0f4f22b4ff82e2ed1b63922d186dd79a3f00a779 | |
parent | 82ecd38e7a518e1086d5db355522287d546dcbf7 (diff) |
Make scroll wheel work with SDL
-rw-r--r-- | src/library_sdl.js | 28 | ||||
-rw-r--r-- | src/struct_info.json | 8 |
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", |