diff --git a/docs/changelog.rst b/docs/changelog.rst index f17bb0a5b..52010cbff 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -186,6 +186,7 @@ Detailed list of changes - The :opt:`show_hyperlink_targets` option now allows specifying a keyboard modifier so that target URLs are only shown on hover when the modifier is pressed (:pull:`9741`) +- Fix a spurious mouse button release event being sent when dragging out of an OS window causes focus loss 0.46.2 [2026-03-21] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/glfw/window.c b/glfw/window.c index 652034fbe..2eebfcbbb 100644 --- a/glfw/window.c +++ b/glfw/window.c @@ -63,8 +63,14 @@ void _glfwInputWindowFocus(_GLFWwindow* window, bool focused) for (int button = 0; button <= GLFW_MOUSE_BUTTON_LAST; button++) { - if (window->mouseButtons[button] == GLFW_PRESS) + if (window->mouseButtons[button] == GLFW_PRESS) { + // Skip releasing the left mouse button when a drag is in + // progress from this window to avoid spurious release events. + // The release will be sent after the drag completes. + if (button == GLFW_MOUSE_BUTTON_LEFT && _glfw.drag.window_id == window->id) + continue; _glfwInputMouseClick(window, button, GLFW_RELEASE, 0); + } } } else _glfw.focusedWindowId = window->id;