From e44fd87fa3abe4abb86a7ffe366aec548d89defc Mon Sep 17 00:00:00 2001 From: bschaefer Date: Sun, 17 Apr 2016 13:48:10 -0700 Subject: [PATCH] Mir: Fix button states --- src/mir_window.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/mir_window.c b/src/mir_window.c index 93a82624..8ab4a4f6 100644 --- a/src/mir_window.c +++ b/src/mir_window.c @@ -160,10 +160,15 @@ static void handlePointerButton(_GLFWwindow* window, int pressed, const MirPointerEvent* pointer_event) { - MirPointerButton button = mir_pointer_event_buttons (pointer_event); int mods = mir_pointer_event_modifiers(pointer_event); const int publicMods = mirModToGLFWMod(mods); - int publicButton; + MirPointerButton button = mir_pointer_button_primary; + static uint32_t oldButtonStates = 0; + uint32_t newButtonStates = mir_pointer_event_buttons(pointer_event); + int publicButton = GLFW_MOUSE_BUTTON_LEFT; + + // XOR our old button states our new states to figure out what was added or removed + button = newButtonStates ^ oldButtonStates; switch (button) { @@ -188,6 +193,8 @@ static void handlePointerButton(_GLFWwindow* window, break; } + oldButtonStates = newButtonStates; + _glfwInputMouseClick(window, publicButton, pressed, publicMods); }