diff --git a/src/windowManager.cpp b/src/windowManager.cpp index e8d3f55e..ae164c14 100644 --- a/src/windowManager.cpp +++ b/src/windowManager.cpp @@ -349,11 +349,9 @@ void Window::handleEvent(const SDL_Event& event) break; case SDL_MOUSEBUTTONUP: mouse_button_down_mask &=~(1 << int(event.button.button)); + render_chain->onPointerUp(mapPixelToCoords({event.button.x, event.button.y}), sp::io::Pointer::mouse); if (!mouse_button_down_mask) - { - render_chain->onPointerUp(mapPixelToCoords({event.button.x, event.button.y}), sp::io::Pointer::mouse); render_chain->onPointerMove(mapPixelToCoords({event.button.x, event.button.y}), sp::io::Pointer::mouse); - } break; case SDL_MOUSEWHEEL: render_chain->onMouseWheelScroll(mapPixelToCoords({event.wheel.mouseX, event.wheel.mouseY}), event.wheel.preciseY); @@ -500,6 +498,15 @@ void Window::handleEvent(const SDL_Event& event) render_chain->onPointerLeave(-1); } break; + case SDL_WINDOWEVENT_FOCUS_LOST: + if (mouse_button_down_mask) + { + mouse_button_down_mask = 0; + int mx, my; + SDL_GetMouseState(&mx, &my); + render_chain->onPointerUp(mapPixelToCoords({mx, my}), sp::io::Pointer::mouse); + } + break; case SDL_WINDOWEVENT_CLOSE: //close(); break;