Skip to content
Snippets Groups Projects
Commit 4ff66a78 authored by Camilla Löwy's avatar Camilla Löwy
Browse files

X11: Fix IM-duplicated key events leaking through

Fixes #747.
Fixes #964.
parent 72d58d7b
Branches
No related tags found
No related merge requests found
......@@ -173,6 +173,7 @@ information on what to include when reporting a bug.
- [X11] Bugfix: Window creation on 64-bit would read past top of stack (#951)
- [X11] Bugfix: XDND support had multiple non-conformance issues (#968)
- [X11] Bugfix: The RandR monitor path was disabled despite working RandR (#972)
- [X11] Bugfix: IM-duplicated key events would leak at low polling rates (#747)
- [Linux] Bugfix: Event processing did not detect joystick disconnection (#932)
- [Cocoa] Added support for Vulkan window surface creation via
[MoltenVK](https://moltengl.com/moltenvk/) (#870)
......
......@@ -141,8 +141,7 @@ typedef struct _GLFWwindowX11
// The last position the cursor was warped to by GLFW
int warpCursorPosX, warpCursorPosY;
// The information from the last KeyPress event
unsigned int lastKeyCode;
// The time of the last KeyPress event
Time lastKeyTime;
} _GLFWwindowX11;
......
......@@ -992,17 +992,16 @@ static void processEvent(XEvent *event)
if (window->x11.ic)
{
// HACK: Ignore duplicate key press events generated by ibus
// Corresponding release events are filtered out by the
// GLFW key repeat logic
if (window->x11.lastKeyCode != keycode ||
window->x11.lastKeyTime != event->xkey.time)
// These have the same timestamp as the original event
// Corresponding release events are filtered out
// implicitly by the GLFW key repeat logic
if (window->x11.lastKeyTime < event->xkey.time)
{
if (keycode)
_glfwInputKey(window, key, keycode, GLFW_PRESS, mods);
}
window->x11.lastKeyCode = keycode;
window->x11.lastKeyTime = event->xkey.time;
}
if (!filtered)
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment