[gtk+] API: add accessors for GdkEvent fields
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] API: add accessors for GdkEvent fields
- Date: Sun, 28 Aug 2011 23:51:21 +0000 (UTC)
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]