From 2367f3543163b6b12bab2d9a1b5bbd4adc98eb41 Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Thu, 19 Apr 2012 11:02:45 +0200 Subject: cvg: Cancel keyboard shortcut if another key is pressed in the meantime --- cvg.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/cvg.c b/cvg.c index aaad048..293c2b1 100644 --- a/cvg.c +++ b/cvg.c @@ -13,6 +13,7 @@ struct cvg { IplImage *output; cairo_surface_t *input_surface; cairo_surface_t *output_surface; + guint last_press; }; static cairo_surface_t * @@ -109,15 +110,20 @@ key_event(GtkWidget *widget, GdkEventKey *event, gpointer userdata) switch (event->keyval) { case GDK_KEY_g: g_signal_emit_by_name(cvg->gauss_btn, "released", NULL); - g_signal_emit_by_name(cvg->gauss_btn, "clicked", NULL); + if (cvg->last_press == event->keyval) + g_signal_emit_by_name(cvg->gauss_btn, "clicked", + NULL); break; case GDK_KEY_o: g_signal_emit_by_name(cvg->open_btn, "released", NULL); - g_signal_emit_by_name(cvg->open_btn, "clicked", NULL); + if (cvg->last_press == event->keyval) + g_signal_emit_by_name(cvg->open_btn, "clicked", + NULL); break; } return FALSE; case GDK_KEY_PRESS: + cvg->last_press = event->keyval; switch (event->keyval) { case GDK_KEY_g: g_signal_emit_by_name(cvg->gauss_btn, "pressed", NULL); -- cgit