From d99e217cfb12f40dd7dbc26146ef287f9f9020fc Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Tue, 27 Apr 2004 17:44:30 +0000 Subject: Implemented Cube, in a sufficiently general way that it also handles the tetrahedron, octahedron and icosahedron. [originally from svn r4151] --- gtk.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'gtk.c') diff --git a/gtk.c b/gtk.c index ec086fc..0d63e58 100644 --- a/gtk.c +++ b/gtk.c @@ -12,6 +12,7 @@ #include #include +#include #include "puzzles.h" @@ -135,12 +136,26 @@ static void destroy(GtkWidget *widget, gpointer data) static gint key_event(GtkWidget *widget, GdkEventKey *event, gpointer data) { frontend *fe = (frontend *)data; + int keyval; if (!fe->pixmap) return TRUE; - if (event->string[0] && !event->string[1] && - !midend_process_key(fe->me, 0, 0, event->string[0])) + if (event->string[0] && !event->string[1]) + keyval = (unsigned char)event->string[0]; + else if (event->keyval == GDK_Up || event->keyval == GDK_KP_Up) + keyval = CURSOR_UP; + else if (event->keyval == GDK_Down || event->keyval == GDK_KP_Down) + keyval = CURSOR_DOWN; + else if (event->keyval == GDK_Left || event->keyval == GDK_KP_Left) + keyval = CURSOR_LEFT; + else if (event->keyval == GDK_Right || event->keyval == GDK_KP_Right) + keyval = CURSOR_RIGHT; + else + keyval = -1; + + if (keyval >= 0 && + !midend_process_key(fe->me, 0, 0, keyval)) gtk_widget_destroy(fe->window); return TRUE; -- cgit v1.1