mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 08:01:30 -07:00
Add origin-shifting (Shift+cursors) and source-shifting (Ctrl+cursors) to Net.
(Adding modifier+cursors handling has had minor knock-on effects on the other puzzles, so that they can continue to ignore modifiers.) (An unfortunate side effect of this is some artifacts in exterior barrier drawing; notably, a disconnected corner can now appear at the corner of the grid under some circumstances. I haven't found a satisfactory way round this yet.) [originally from svn r5844]
This commit is contained in:
10
gtk.c
10
gtk.c
@ -317,24 +317,26 @@ static gint key_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
|
||||
{
|
||||
frontend *fe = (frontend *)data;
|
||||
int keyval;
|
||||
int shift = (event->state & GDK_SHIFT_MASK) ? MOD_SHFT : 0;
|
||||
int ctrl = (event->state & GDK_CONTROL_MASK) ? MOD_CTRL : 0;
|
||||
|
||||
if (!fe->pixmap)
|
||||
return TRUE;
|
||||
|
||||
if (event->keyval == GDK_Up)
|
||||
keyval = CURSOR_UP;
|
||||
keyval = shift | ctrl | CURSOR_UP;
|
||||
else if (event->keyval == GDK_KP_Up || event->keyval == GDK_KP_8)
|
||||
keyval = MOD_NUM_KEYPAD | '8';
|
||||
else if (event->keyval == GDK_Down)
|
||||
keyval = CURSOR_DOWN;
|
||||
keyval = shift | ctrl | CURSOR_DOWN;
|
||||
else if (event->keyval == GDK_KP_Down || event->keyval == GDK_KP_2)
|
||||
keyval = MOD_NUM_KEYPAD | '2';
|
||||
else if (event->keyval == GDK_Left)
|
||||
keyval = CURSOR_LEFT;
|
||||
keyval = shift | ctrl | CURSOR_LEFT;
|
||||
else if (event->keyval == GDK_KP_Left || event->keyval == GDK_KP_4)
|
||||
keyval = MOD_NUM_KEYPAD | '4';
|
||||
else if (event->keyval == GDK_Right)
|
||||
keyval = CURSOR_RIGHT;
|
||||
keyval = shift | ctrl | CURSOR_RIGHT;
|
||||
else if (event->keyval == GDK_KP_Right || event->keyval == GDK_KP_6)
|
||||
keyval = MOD_NUM_KEYPAD | '6';
|
||||
else if (event->keyval == GDK_KP_Home || event->keyval == GDK_KP_7)
|
||||
|
Reference in New Issue
Block a user