summaryrefslogtreecommitdiff
path: root/src/display.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/display.c')
-rw-r--r--src/display.c28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/display.c b/src/display.c
index 72dfb2b..ed10330 100644
--- a/src/display.c
+++ b/src/display.c
@@ -472,6 +472,23 @@ static void execute_command(struct nanolight *nl)
}
+static gboolean key_release_sig(GtkWidget *da, GdkEventKey *event, struct nanolight *nl)
+{
+ switch ( event->keyval ) {
+
+ case GDK_KEY_KP_Enter :
+ nl->go_lock = 0;
+ break;
+
+ case GDK_KEY_KP_Add :
+ nl->sb_lock = 0;
+ break;
+ }
+
+ return FALSE;
+}
+
+
static gboolean key_press_sig(GtkWidget *da, GdkEventKey *event, struct nanolight *nl)
{
gboolean r;
@@ -509,11 +526,17 @@ static gboolean key_press_sig(GtkWidget *da, GdkEventKey *event, struct nanoligh
break;
case GDK_KEY_KP_Enter :
- printf("Go!\n");
+ if ( !nl->go_lock ) {
+ printf("Go!\n");
+ nl->go_lock = 1;
+ }
break;
case GDK_KEY_KP_Add :
- printf("Stop/back!\n");
+ if ( !nl->sb_lock ) {
+ printf("Stop/back!\n");
+ nl->sb_lock = 1;
+ }
break;
case GDK_KEY_Home :
@@ -611,6 +634,7 @@ static gint realise_sig(GtkWidget *da, struct nanolight *nl)
gdk_window_set_accept_focus(win, TRUE);
g_signal_connect(G_OBJECT(nl->im_context), "commit", G_CALLBACK(im_commit_sig), nl);
g_signal_connect(G_OBJECT(da), "key-press-event", G_CALLBACK(key_press_sig), nl);
+ g_signal_connect(G_OBJECT(da), "key-release-event", G_CALLBACK(key_release_sig), nl);
g_signal_connect(G_OBJECT(da), "button-press-event", G_CALLBACK(button_press_sig), nl);
g_signal_connect(G_OBJECT(da), "button-release-event", G_CALLBACK(button_release_sig), nl);
g_signal_connect(G_OBJECT(da), "motion-notify-event", G_CALLBACK(motion_sig), nl);