\r
if ( ++SDLDeviceInstances == 1 )\r
{\r
- // Initialize SDL... Timer for sleep, video for the obvious, and\r
- // noparachute prevents SDL from catching fatal errors.\r
- if (SDL_Init( SDL_INIT_TIMER|SDL_INIT_VIDEO|\r
+ u32 flags = SDL_INIT_TIMER | SDL_INIT_EVENTS;\r
+ if (CreationParams.DriverType != video::EDT_NULL)\r
+ flags |= SDL_INIT_VIDEO;\r
#if defined(_IRR_COMPILE_WITH_JOYSTICK_EVENTS_)\r
- SDL_INIT_JOYSTICK|\r
+ flags |= SDL_INIT_JOYSTICK;\r
#endif\r
- SDL_INIT_NOPARACHUTE ) < 0)\r
+ if (SDL_Init(flags) < 0)\r
{\r
os::Printer::log( "Unable to initialize SDL!", SDL_GetError());\r
Close = true;\r
{\r
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 0);\r
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 0);\r
- } \r
+ }\r
\r
SDL_CreateWindowAndRenderer(0, 0, SDL_Flags, &Window, &Renderer); // 0,0 will use the canvas size\r
\r
\r
switch ( SDL_event.type )\r
{\r
- case SDL_MOUSEMOTION:\r
+ case SDL_MOUSEMOTION: {\r
+ SDL_Keymod keymod = SDL_GetModState();\r
+\r
irrevent.EventType = irr::EET_MOUSE_INPUT_EVENT;\r
irrevent.MouseInput.Event = irr::EMIE_MOUSE_MOVED;\r
MouseX = irrevent.MouseInput.X = SDL_event.motion.x;\r
MouseXRel = SDL_event.motion.xrel;\r
MouseYRel = SDL_event.motion.yrel;\r
irrevent.MouseInput.ButtonStates = MouseButtonStates;\r
+ irrevent.MouseInput.Shift = (keymod & KMOD_SHIFT) != 0;\r
+ irrevent.MouseInput.Control = (keymod & KMOD_CTRL) != 0;\r
\r
postEventFromUser(irrevent);\r
break;\r
- case SDL_MOUSEWHEEL:\r
+ }\r
+ case SDL_MOUSEWHEEL: {\r
+ SDL_Keymod keymod = SDL_GetModState();\r
+\r
irrevent.EventType = irr::EET_MOUSE_INPUT_EVENT;\r
irrevent.MouseInput.Event = irr::EMIE_MOUSE_WHEEL;\r
irrevent.MouseInput.Wheel = static_cast<float>(SDL_event.wheel.y);\r
+ irrevent.MouseInput.Shift = (keymod & KMOD_SHIFT) != 0;\r
+ irrevent.MouseInput.Control = (keymod & KMOD_CTRL) != 0;\r
+ irrevent.MouseInput.X = MouseX;\r
+ irrevent.MouseInput.Y = MouseY;\r
+\r
postEventFromUser(irrevent);\r
break;\r
+ }\r
case SDL_MOUSEBUTTONDOWN:\r
- case SDL_MOUSEBUTTONUP:\r
+ case SDL_MOUSEBUTTONUP: {\r
+ SDL_Keymod keymod = SDL_GetModState();\r
+\r
irrevent.EventType = irr::EET_MOUSE_INPUT_EVENT;\r
irrevent.MouseInput.X = SDL_event.button.x;\r
irrevent.MouseInput.Y = SDL_event.button.y;\r
+ irrevent.MouseInput.Shift = (keymod & KMOD_SHIFT) != 0;\r
+ irrevent.MouseInput.Control = (keymod & KMOD_CTRL) != 0;\r
\r
irrevent.MouseInput.Event = irr::EMIE_MOUSE_MOVED;\r
\r
}\r
}\r
break;\r
+ }\r
\r
case SDL_TEXTINPUT:\r
{\r
os::Printer::log("Resizable not available on the web." , ELL_WARNING);\r
return;\r
#else // !_IRR_EMSCRIPTEN_PLATFORM_\r
- if (resize != Resizable) { \r
+ if (resize != Resizable) {\r
if (resize)\r
SDL_Flags |= SDL_WINDOW_RESIZABLE;\r
else\r