]> Pileus Git - ~andy/gtk/commitdiff
wayland: Report middle and right buttons correctly
authorKristian Høgsberg <krh@bitplanet.net>
Tue, 17 Jan 2012 17:30:52 +0000 (12:30 -0500)
committerKristian Høgsberg <krh@bitplanet.net>
Wed, 18 Jan 2012 17:04:18 +0000 (12:04 -0500)
The linux evdev button codes have right as 274 and left as 273.

gdk/wayland/gdkdevice-wayland.c

index a749c72d2976d0d3aed8c7855d760dc0137ca0ad..cc79ebf8462701a2a2cbea494b46ec5b2617e146 100644 (file)
@@ -378,6 +378,19 @@ input_handle_button(void *data, struct wl_input_device *input_device,
   GdkDisplayWayland *display = GDK_DISPLAY_WAYLAND (device->display);
   GdkEvent *event;
   uint32_t modifier;
+  int gdk_button;
+
+  switch (button) {
+  case 273:
+    gdk_button = 3;
+    break;
+  case 274:
+    gdk_button = 2;
+    break;
+  default:
+    gdk_button = button - 271;
+    break;
+  }
 
   device->time = time;
   event = gdk_event_new (state ? GDK_BUTTON_PRESS : GDK_BUTTON_RELEASE);
@@ -390,10 +403,10 @@ input_handle_button(void *data, struct wl_input_device *input_device,
   event->button.y_root = (gdouble) device->y;
   event->button.axes = NULL;
   event->button.state = device->modifiers;
-  event->button.button = button - 271;
+  event->button.button = gdk_button;
   gdk_event_set_screen (event, display->screen);
 
-  modifier = 1 << (8 + button - 272);
+  modifier = 1 << (8 + gdk_button - 1);
   if (state)
     device->modifiers |= modifier;
   else