diff options
| author | Simon Tatham <anakin@pobox.com> | 2004-04-27 17:44:30 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2004-04-27 17:44:30 +0000 |
| commit | d99e217cfb12f40dd7dbc26146ef287f9f9020fc (patch) | |
| tree | 531dd9d2e94f62ba974f8a9ddab2222c2eba2d8b /gtk.c | |
| parent | 9867234e70002b8252a48c2bc023875ff87b8ca1 (diff) | |
| download | puzzles-d99e217cfb12f40dd7dbc26146ef287f9f9020fc.zip puzzles-d99e217cfb12f40dd7dbc26146ef287f9f9020fc.tar.gz puzzles-d99e217cfb12f40dd7dbc26146ef287f9f9020fc.tar.bz2 puzzles-d99e217cfb12f40dd7dbc26146ef287f9f9020fc.tar.xz | |
Implemented Cube, in a sufficiently general way that it also handles
the tetrahedron, octahedron and icosahedron.
[originally from svn r4151]
Diffstat (limited to 'gtk.c')
| -rw-r--r-- | gtk.c | 19 |
1 files changed, 17 insertions, 2 deletions
@@ -12,6 +12,7 @@ #include <stdarg.h> #include <gtk/gtk.h> +#include <gdk/gdkkeysyms.h> #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; |