summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2011-08-28 15:26:47 -0400
committerCosimo Cecchi <cosimoc@gnome.org>2011-08-28 19:50:34 -0400
commitf7c188c019ec811e4ae5d5bcf7cb333cfdfd9002 (patch)
treeb6d2858b2c3118f9b9b2911e48f9461cf0b4cd68
parent5cc13182793a329feeab86078877940a392babda (diff)
downloadgtk+-f7c188c019ec811e4ae5d5bcf7cb333cfdfd9002.tar.gz
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
-rw-r--r--docs/reference/gdk/gdk3-sections.txt9
-rw-r--r--gdk/gdk.symbols5
-rw-r--r--gdk/gdkevents.c186
-rw-r--r--gdk/gdkevents.h16
4 files changed, 211 insertions, 5 deletions
diff --git a/docs/reference/gdk/gdk3-sections.txt b/docs/reference/gdk/gdk3-sections.txt
index 6f373f1c36..54934520de 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 04ca455dbf..86423c6bb6 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 29dff076d0..ae42b4ffa4 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 f1684ba66e..8bf7d565d6 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);