_inp
This commit is contained in:
@@ -724,16 +724,12 @@ void InputService::Update()
|
||||
|
||||
// Send input events for the focused window
|
||||
WindowsManager::WindowsLocker.Lock();
|
||||
bool mouseRelativeMode = Input::Mouse->IsRelative();
|
||||
for (const auto& e : InputEvents)
|
||||
{
|
||||
auto window = e.Target ? e.Target : defaultWindow;
|
||||
if (!window || !WindowsManager::Windows.Contains(window))
|
||||
continue;
|
||||
|
||||
bool handleRelativeModeInputOnly = mouseRelativeMode;
|
||||
if (handleRelativeModeInputOnly && window->GetCursor() == CursorType::Hidden && window->IsMouseTracking())
|
||||
handleRelativeModeInputOnly = false;
|
||||
switch (e.Type)
|
||||
{
|
||||
// Keyboard events
|
||||
@@ -748,24 +744,19 @@ void InputService::Update()
|
||||
break;
|
||||
// Mouse events
|
||||
case InputDevice::EventType::MouseDown:
|
||||
if (!handleRelativeModeInputOnly)
|
||||
window->OnMouseDown(window->ScreenToClient(e.MouseData.Position), e.MouseData.Button);
|
||||
window->OnMouseDown(window->ScreenToClient(e.MouseData.Position), e.MouseData.Button);
|
||||
break;
|
||||
case InputDevice::EventType::MouseUp:
|
||||
if (!handleRelativeModeInputOnly)
|
||||
window->OnMouseUp(window->ScreenToClient(e.MouseData.Position), e.MouseData.Button);
|
||||
window->OnMouseUp(window->ScreenToClient(e.MouseData.Position), e.MouseData.Button);
|
||||
break;
|
||||
case InputDevice::EventType::MouseDoubleClick:
|
||||
if (!handleRelativeModeInputOnly)
|
||||
window->OnMouseDoubleClick(window->ScreenToClient(e.MouseData.Position), e.MouseData.Button);
|
||||
window->OnMouseDoubleClick(window->ScreenToClient(e.MouseData.Position), e.MouseData.Button);
|
||||
break;
|
||||
case InputDevice::EventType::MouseWheel:
|
||||
if (!handleRelativeModeInputOnly)
|
||||
window->OnMouseWheel(window->ScreenToClient(e.MouseWheelData.Position), e.MouseWheelData.WheelDelta);
|
||||
window->OnMouseWheel(window->ScreenToClient(e.MouseWheelData.Position), e.MouseWheelData.WheelDelta);
|
||||
break;
|
||||
case InputDevice::EventType::MouseMove:
|
||||
if (!handleRelativeModeInputOnly)
|
||||
window->OnMouseMove(window->ScreenToClient(e.MouseData.Position));
|
||||
window->OnMouseMove(window->ScreenToClient(e.MouseData.Position));
|
||||
break;
|
||||
case InputDevice::EventType::MouseMoveRelative:
|
||||
window->OnMouseMoveRelative(e.MouseMovementData.PositionRelative);
|
||||
@@ -775,16 +766,13 @@ void InputService::Update()
|
||||
break;
|
||||
// Touch events
|
||||
case InputDevice::EventType::TouchDown:
|
||||
if (!handleRelativeModeInputOnly)
|
||||
window->OnTouchDown(window->ScreenToClient(e.TouchData.Position), e.TouchData.PointerId);
|
||||
window->OnTouchDown(window->ScreenToClient(e.TouchData.Position), e.TouchData.PointerId);
|
||||
break;
|
||||
case InputDevice::EventType::TouchMove:
|
||||
if (!handleRelativeModeInputOnly)
|
||||
window->OnTouchMove(window->ScreenToClient(e.TouchData.Position), e.TouchData.PointerId);
|
||||
window->OnTouchMove(window->ScreenToClient(e.TouchData.Position), e.TouchData.PointerId);
|
||||
break;
|
||||
case InputDevice::EventType::TouchUp:
|
||||
if (!handleRelativeModeInputOnly)
|
||||
window->OnTouchUp(window->ScreenToClient(e.TouchData.Position), e.TouchData.PointerId);
|
||||
window->OnTouchUp(window->ScreenToClient(e.TouchData.Position), e.TouchData.PointerId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user