aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Ben Boeckel <MathStuf@gmail.com>2011-04-21 13:33:50 -0400
committerGravatar keis <keijser@gmail.com>2011-04-23 13:58:43 +0200
commit02fcc0f6527353baf8f376ed6651cfe7c77bf15b (patch)
tree9a8223262e6b95fe5fdac857b64a7048c4b0f62a
parent169f53f110ca096d78c986402b5f9237924b8fbc (diff)
Add button_to_event function for clicks
-rw-r--r--src/callbacks.c10
-rw-r--r--src/events.c18
-rw-r--r--src/events.h5
3 files changed, 24 insertions, 9 deletions
diff --git a/src/callbacks.c b/src/callbacks.c
index 6821700..5873b5e 100644
--- a/src/callbacks.c
+++ b/src/callbacks.c
@@ -568,7 +568,6 @@ gboolean
button_press_cb (GtkWidget* window, GdkEventButton* event) {
(void) window;
gint context;
- gchar *details;
gboolean propagate = FALSE,
sendev = FALSE;
@@ -595,9 +594,7 @@ button_press_cb (GtkWidget* window, GdkEventButton* event) {
}
if(sendev) {
- details = g_strdup_printf("Button%d", event->button);
- send_event(KEY_PRESS, NULL, TYPE_NAME, details, NULL);
- g_free (details);
+ button_to_event(event->button, event->state, GDK_BUTTON_PRESS);
}
}
@@ -608,7 +605,6 @@ gboolean
button_release_cb (GtkWidget* window, GdkEventButton* event) {
(void) window;
gint context;
- gchar *details;
gboolean propagate = FALSE,
sendev = FALSE;
@@ -624,9 +620,7 @@ button_release_cb (GtkWidget* window, GdkEventButton* event) {
}
if(sendev) {
- details = g_strdup_printf("Button%d", event->button);
- send_event(KEY_RELEASE, NULL, TYPE_NAME, details, NULL);
- g_free (details);
+ button_to_event(event->button, event->state, GDK_BUTTON_RELEASE);
}
}
diff --git a/src/events.c b/src/events.c
index 62d6414..0ae7a98 100644
--- a/src/events.c
+++ b/src/events.c
@@ -306,4 +306,22 @@ key_to_event(guint keyval, guint state, guint is_modifier, gint mode) {
g_free(modifiers);
}
+/* Transform gdk button events to our own events */
+void
+button_to_event(guint buttonval, guint state, gint mode) {
+ gchar *details;
+ gchar *modifiers = NULL;
+
+ /* Get modifier state */
+ modifiers = get_modifier_mask(state);
+
+ details = g_strdup_printf("Button%d", buttonval);
+
+ send_event(mode == GDK_BUTTON_PRESS ? KEY_PRESS : KEY_RELEASE, NULL,
+ TYPE_STR, modifiers, TYPE_FORMATTEDSTR, details, NULL);
+
+ g_free(details);
+ g_free(modifiers);
+}
+
/* vi: set et ts=4: */
diff --git a/src/events.h b/src/events.h
index 0c40206..dbe0244 100644
--- a/src/events.h
+++ b/src/events.h
@@ -46,6 +46,9 @@ gchar *
get_modifier_mask(guint state);
void
-key_to_event(guint keyval, guint state, guint is_modifier, int mode);
+key_to_event(guint keyval, guint state, guint is_modifier, gint mode);
+
+void
+button_to_event(guint buttonval, guint state, gint mode);
#endif