diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2011-08-28 15:26:47 -0400 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2011-08-28 19:50:34 -0400 |
commit | f7c188c019ec811e4ae5d5bcf7cb333cfdfd9002 (patch) | |
tree | b6d2858b2c3118f9b9b2911e48f9461cf0b4cd68 | |
parent | 5cc13182793a329feeab86078877940a392babda (diff) | |
download | gtk+-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.txt | 9 | ||||
-rw-r--r-- | gdk/gdk.symbols | 5 | ||||
-rw-r--r-- | gdk/gdkevents.c | 186 | ||||
-rw-r--r-- | 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 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); |