]> Pileus Git - ~andy/gtk/commitdiff
API: add accessors for GdkEvent fields
authorCosimo Cecchi <cosimoc@gnome.org>
Sun, 28 Aug 2011 19:26:47 +0000 (15:26 -0400)
committerCosimo Cecchi <cosimoc@gnome.org>
Sun, 28 Aug 2011 23:50:34 +0000 (19:50 -0400)
Add accessors for the following fields: button, keyval, keycode, scroll
direction, click count.

https://bugzilla.gnome.org/show_bug.cgi?id=657384

docs/reference/gdk/gdk3-sections.txt
gdk/gdk.symbols
gdk/gdkevents.c
gdk/gdkevents.h

index 6f373f1c366e592165e91d35f92b3fa727c913ee..54934520dee6485abc996eb25ed353dfa5648ce3 100644 (file)
@@ -761,11 +761,16 @@ gdk_event_put
 gdk_event_new
 gdk_event_copy
 gdk_event_free
-gdk_event_get_time
-gdk_event_get_state
 gdk_event_get_axis
+gdk_event_get_button
+gdk_event_get_click_count
 gdk_event_get_coords
+gdk_event_get_keycode
+gdk_event_get_keyval
 gdk_event_get_root_coords
+gdk_event_get_scroll_direction
+gdk_event_get_state
+gdk_event_get_time
 gdk_event_request_motions
 gdk_events_get_angle
 gdk_events_get_center
index 04ca455dbf75a8ac12b0db3e556c133e27cb9056..86423c6bb6e6d1ac8f738164c844812e1d7131fb 100644 (file)
@@ -156,10 +156,15 @@ gdk_event_copy
 gdk_event_free
 gdk_event_get
 gdk_event_get_axis
+gdk_event_get_button
+gdk_event_get_click_count
 gdk_event_get_coords
 gdk_event_get_device
+gdk_event_get_keycode
+gdk_event_get_keyval
 gdk_event_get_root_coords
 gdk_event_get_screen
+gdk_event_get_scroll_direction
 gdk_event_get_source_device
 gdk_event_get_state
 gdk_event_get_time
index 29dff076d00c9951f829a33f4adf480bb0aded15..ae42b4ffa4d3434ae06e6e5e663949c0906bf7f7 100644 (file)
@@ -949,6 +949,192 @@ gdk_event_get_root_coords (const GdkEvent *event,
   return fetched;
 }
 
+/**
+ * gdk_event_get_button:
+ * @event: a #GdkEvent
+ * @button: (out): location to store mouse button number
+ *
+ * Extract the button number from an event.
+ *
+ * Return value: %TRUE if the event delivered a button number
+ *
+ * Since: 3.2
+ **/
+gboolean
+gdk_event_get_button (const GdkEvent *event,
+                      guint *button)
+{
+  gboolean fetched = TRUE;
+  guint number = 0;
+
+  g_return_val_if_fail (event != NULL, FALSE);
+  
+  switch (event->type)
+    {
+    case GDK_BUTTON_PRESS:
+    case GDK_2BUTTON_PRESS:
+    case GDK_3BUTTON_PRESS:
+    case GDK_BUTTON_RELEASE:
+      number = event->button.button;
+      break;
+    default:
+      fetched = FALSE;
+      break;
+    }
+
+  if (button)
+    *button = number;
+
+  return fetched;
+}
+
+/**
+ * gdk_event_get_click_count:
+ * @event: a #GdkEvent
+ * @click_count: (out): location to store click count
+ *
+ * Extracts the click count from an event.
+ *
+ * Return value: %TRUE if the event delivered a click count
+ *
+ * Since: 3.2
+ */
+gboolean
+gdk_event_get_click_count (const GdkEvent *event,
+                           guint *click_count)
+{
+  gboolean fetched = TRUE;
+  guint number = 0;
+
+  g_return_val_if_fail (event != NULL, FALSE);
+
+  switch (event->type)
+    {
+    case GDK_BUTTON_PRESS:
+    case GDK_BUTTON_RELEASE:
+      number = 1;
+      break;
+    case GDK_2BUTTON_PRESS:
+      number = 2;
+      break;
+    case GDK_3BUTTON_PRESS:
+      number = 3;
+      break;
+    default:
+      fetched = FALSE;
+      break;
+    }
+
+  if (click_count)
+    *click_count = number;
+
+  return fetched;
+}
+
+/**
+ * gdk_event_get_keyval:
+ * @event: a #GdkEvent
+ * @keyval: (out): location to store the keyval
+ *
+ * Extracts the keyval from an event.
+ *
+ * Return value: %TRUE if the event delivered a key symbol
+ *
+ * Since: 3.2
+ */
+gboolean
+gdk_event_get_keyval (const GdkEvent *event,
+                      guint *keyval)
+{
+  gboolean fetched = TRUE;
+  guint number = 0;
+
+  switch (event->type)
+    {
+    case GDK_KEY_PRESS:
+    case GDK_KEY_RELEASE:
+      number = event->key.keyval;
+      break;
+    default:
+      fetched = FALSE;
+      break;
+    }
+
+  if (keyval)
+    *keyval = number;
+
+  return fetched;
+}
+
+/**
+ * gdk_event_get_keycode:
+ * @event: a #GdkEvent
+ * @keycode: (out): location to store the keycode
+ *
+ * Extracts the hardware keycode from an event.
+ *
+ * Return value: %TRUE if the event delivered a hardware keycode
+ *
+ * Since: 3.2
+ */
+gboolean
+gdk_event_get_keycode (const GdkEvent *event,
+                       guint16 *keycode)
+{
+  gboolean fetched = TRUE;
+  guint16 number = 0;
+
+  switch (event->type)
+    {
+    case GDK_KEY_PRESS:
+    case GDK_KEY_RELEASE:
+      number = event->key.hardware_keycode;
+      break;
+    default:
+      fetched = FALSE;
+      break;
+    }
+
+  if (keycode)
+    *keycode = number;
+
+  return fetched;
+}
+
+/**
+ * gdk_event_get_scroll_direction:
+ * @event: a #GdkEvent
+ * @direction: (out): location to store the scroll direction
+ *
+ * Extracts the scroll direction from an event.
+ *
+ * Return value: %TRUE if the event delivered a scroll direction
+ *
+ * Since: 3.2
+ */
+gboolean
+gdk_event_get_scroll_direction (const GdkEvent *event,
+                                GdkScrollDirection *direction)
+{
+  gboolean fetched = TRUE;
+  GdkScrollDirection dir = 0;
+
+  switch (event->type)
+    {
+    case GDK_SCROLL:
+      dir = event->scroll.direction;
+      break;
+    default:
+      fetched = FALSE;
+      break;
+    }
+
+  if (direction)
+    *direction = dir;
+
+  return fetched;
+}
+
 /**
  * gdk_event_get_axis:
  * @event: a #GdkEvent
index f1684ba66ecc8a7250534b50694d58b918f5c3c6..8bf7d565d62c03db207e923ebaae5b417bf8b4b2 100644 (file)
@@ -1054,9 +1054,19 @@ gboolean  gdk_event_get_state           (const GdkEvent  *event,
 gboolean  gdk_event_get_coords         (const GdkEvent  *event,
                                         gdouble         *x_win,
                                         gdouble         *y_win);
-gboolean  gdk_event_get_root_coords    (const GdkEvent  *event,
-                                        gdouble         *x_root,
-                                        gdouble         *y_root);
+gboolean  gdk_event_get_root_coords    (const GdkEvent *event,
+                                        gdouble        *x_root,
+                                        gdouble        *y_root);
+gboolean  gdk_event_get_button          (const GdkEvent *event,
+                                         guint          *button);
+gboolean  gdk_event_get_click_count     (const GdkEvent *event,
+                                         guint          *click_count);
+gboolean  gdk_event_get_keyval          (const GdkEvent *event,
+                                         guint          *keyval);
+gboolean  gdk_event_get_keycode         (const GdkEvent *event,
+                                         guint16        *keycode);
+gboolean gdk_event_get_scroll_direction (const GdkEvent *event,
+                                         GdkScrollDirection *direction);
 gboolean  gdk_event_get_axis            (const GdkEvent  *event,
                                          GdkAxisUse       axis_use,
                                          gdouble         *value);