diff --git a/Source/diablo.cpp b/Source/diablo.cpp index f7b256b61..8c080ee0e 100644 --- a/Source/diablo.cpp +++ b/Source/diablo.cpp @@ -746,6 +746,35 @@ void GameEventHandler(const SDL_Event &event, uint16_t modState) MousePosition = { event.button.x, event.button.y }; HandleMouseButtonUp(event.button.button, modState); return; +#if SDL_VERSION_ATLEAST(2, 0, 0) + case SDL_MOUSEWHEEL: + if (event.wheel.y > 0) { // Up + if (stextflag != TalkID::None) { + StoreUp(); + } else if (QuestLogIsOpen) { + QuestlogUp(); + } else if (HelpFlag) { + HelpScrollUp(); + } else if (ChatLogFlag) { + ChatLogScrollUp(); + } else if (IsStashOpen) { + Stash.PreviousPage(); + } + } else if (event.wheel.y < 0) { // down + if (stextflag != TalkID::None) { + StoreDown(); + } else if (QuestLogIsOpen) { + QuestlogDown(); + } else if (HelpFlag) { + HelpScrollDown(); + } else if (ChatLogFlag) { + ChatLogScrollDown(); + } else if (IsStashOpen) { + Stash.NextPage(); + } + } + break; +#endif default: if (IsCustomEvent(event.type)) { if (gbIsMultiplayer) diff --git a/Source/engine/events.cpp b/Source/engine/events.cpp index 2c37306a6..7bf605148 100644 --- a/Source/engine/events.cpp +++ b/Source/engine/events.cpp @@ -101,6 +101,7 @@ bool FetchMessage_Real(SDL_Event *event, uint16_t *modState) case SDL_TEXTEDITING: case SDL_TEXTINPUT: case SDL_WINDOWEVENT: + case SDL_MOUSEWHEEL: #else case SDL_ACTIVEEVENT: #endif @@ -120,25 +121,6 @@ bool FetchMessage_Real(SDL_Event *event, uint16_t *modState) *event = e; break; #ifndef USE_SDL1 - case SDL_MOUSEWHEEL: -#ifdef _DEBUG - if (IsConsoleOpen()) { - *event = e; - break; - } -#endif - // This is a hack, mousewheel events should be handled directly by their consumers instead. - event->type = SDL_KEYDOWN; - if (e.wheel.y > 0) { - event->key.keysym.sym = (SDL_GetModState() & KMOD_CTRL) != 0 ? SDLK_KP_PLUS : SDLK_UP; - } else if (e.wheel.y < 0) { - event->key.keysym.sym = (SDL_GetModState() & KMOD_CTRL) != 0 ? SDLK_KP_MINUS : SDLK_DOWN; - } else if (e.wheel.x > 0) { - event->key.keysym.sym = SDLK_LEFT; - } else if (e.wheel.x < 0) { - event->key.keysym.sym = SDLK_RIGHT; - } - break; #if SDL_VERSION_ATLEAST(2, 0, 4) case SDL_AUDIODEVICEADDED: return FalseAvail("SDL_AUDIODEVICEADDED", e.adevice.which);