[gtk+] API: add accessors for GdkEvent fields



commit f7c188c019ec811e4ae5d5bcf7cb333cfdfd9002
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Sun Aug 28 15:26:47 2011 -0400

    API: add accessors for GdkEvent fields
    
    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 |    9 ++-
 gdk/gdk.symbols                      |    5 +
 gdk/gdkevents.c                      |  186 ++++++++++++++++++++++++++++++++++
 gdk/gdkevents.h                      |   16 +++-
 4 files changed, 211 insertions(+), 5 deletions(-)
---
diff --git a/docs/reference/gdk/gdk3-sections.txt b/docs/reference/gdk/gdk3-sections.txt
index 6f373f1..5493452 100644
--- a/docs/reference/gdk/gdk3-sections.txt
+++ b/docs/reference/gdk/gdk3-sections.txt
@@ -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
diff --git a/gdk/gdk.symbols b/gdk/gdk.symbols
index 04ca455..86423c6 100644
--- a/gdk/gdk.symbols
+++ b/gdk/gdk.symbols
@@ -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
diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c
index 29dff07..ae42b4f 100644
--- a/gdk/gdkevents.c
+++ b/gdk/gdkevents.c
@@ -950,6 +950,192 @@ gdk_event_get_root_coords (const GdkEvent *event,
 }
 
 /**
+ * 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
  * @axis_use: the axis use to look for
diff --git a/gdk/gdkevents.h b/gdk/gdkevents.h
index f1684ba..8bf7d56 100644
--- a/gdk/gdkevents.h
+++ b/gdk/gdkevents.h
@@ -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);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]