From 24884399671da9da0889809a5ca04ce04eadb72d Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 21 Apr 2011 13:42:02 -0400 Subject: Add key events for double and triple clicks --- src/callbacks.c | 19 +++++++++++++++++++ src/events.c | 15 ++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/callbacks.c b/src/callbacks.c index 5873b5e..33c9766 100644 --- a/src/callbacks.c +++ b/src/callbacks.c @@ -598,6 +598,25 @@ button_press_cb (GtkWidget* window, GdkEventButton* event) { } } + if(event->type == GDK_2BUTTON_PRESS || event->type == GDK_3BUTTON_PRESS) { + if(event->button == 1) { + sendev = TRUE; + propagate = TRUE; + } + else if(event->button == 2 && !(context & WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE)) { + sendev = TRUE; + propagate = TRUE; + } + else if(event->button > 3) { + sendev = TRUE; + propagate = TRUE; + } + + if(sendev) { + button_to_event(event->button, event->state, event->type); + } + } + return propagate; } diff --git a/src/events.c b/src/events.c index 0ae7a98..3074b34 100644 --- a/src/events.c +++ b/src/events.c @@ -310,12 +310,25 @@ key_to_event(guint keyval, guint state, guint is_modifier, gint mode) { void button_to_event(guint buttonval, guint state, gint mode) { gchar *details; + const char *reps; gchar *modifiers = NULL; /* Get modifier state */ modifiers = get_modifier_mask(state); - details = g_strdup_printf("Button%d", buttonval); + switch (mode) { + case GDK_2BUTTON_PRESS: + reps = "2"; + break; + case GDK_3BUTTON_PRESS: + reps = "3"; + break; + default: + reps = ""; + break; + } + + details = g_strdup_printf("%sButton%d", reps, buttonval); send_event(mode == GDK_BUTTON_PRESS ? KEY_PRESS : KEY_RELEASE, NULL, TYPE_STR, modifiers, TYPE_FORMATTEDSTR, details, NULL); -- cgit v1.2.3