From e5d63aaece5310aee39ba1da9a595fc7a8410a50 Mon Sep 17 00:00:00 2001 From: Sergey Pusnei Date: Mon, 27 Mar 2017 21:37:23 -0400 Subject: [PATCH] 8145 - Mouse Position is unknown until first mouse event on X11 & Win - X11 update input->pos on EnterNotify - X11 & Win call first-time events processing before main initialization (cherry picked from commit c79e998d1f12b281530b15d3015e7128418c8a60) --- platform/windows/os_windows.cpp | 3 +++ platform/x11/os_x11.cpp | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index 2b9574458c5..436c6ebf4e1 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -2176,6 +2176,9 @@ void OS_Windows::run() { if (!main_loop) return; + // Process all events before the main initialization so the cursor will get initialized properly + process_events(); // get rid of pending events + main_loop->init(); uint64_t last_ticks = get_ticks_usec(); diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp index 5a829d62df7..3975a6184f4 100644 --- a/platform/x11/os_x11.cpp +++ b/platform/x11/os_x11.cpp @@ -1282,8 +1282,12 @@ void OS_X11::process_xevents() { if (main_loop && mouse_mode != MOUSE_MODE_CAPTURED) main_loop->notification(MainLoop::NOTIFICATION_WM_MOUSE_ENTER); - if (input) + if (input) { + // Update mouse position. It is triggered before mouse motion. + Point2i pos(event.xmotion.x, event.xmotion.y); + input->set_mouse_pos(pos); input->set_mouse_in_window(true); + } } break; case FocusIn: minimized = false; @@ -1893,6 +1897,9 @@ void OS_X11::run() { if (!main_loop) return; + // Process all events before the main initialization so the cursor will get initialized properly + process_xevents(); // get rid of pending events + main_loop->init(); // uint64_t last_ticks=get_ticks_usec();