Mir: Fix button states

This commit is contained in:
bschaefer 2016-04-17 13:48:10 -07:00 committed by Camilla Berglund
parent f000b5daff
commit e44fd87fa3

View File

@ -160,10 +160,15 @@ static void handlePointerButton(_GLFWwindow* window,
int pressed, int pressed,
const MirPointerEvent* pointer_event) const MirPointerEvent* pointer_event)
{ {
MirPointerButton button = mir_pointer_event_buttons (pointer_event);
int mods = mir_pointer_event_modifiers(pointer_event); int mods = mir_pointer_event_modifiers(pointer_event);
const int publicMods = mirModToGLFWMod(mods); 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) switch (button)
{ {
@ -188,6 +193,8 @@ static void handlePointerButton(_GLFWwindow* window,
break; break;
} }
oldButtonStates = newButtonStates;
_glfwInputMouseClick(window, publicButton, pressed, publicMods); _glfwInputMouseClick(window, publicButton, pressed, publicMods);
} }