From 0fd2523f5fc756e8a4cf5cff9d9e3fea6d69971f Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sat, 12 Mar 2011 19:02:58 +0000 Subject: make tab work in forms on gtk svn path=/trunk/netsurf/; revision=11982 --- gtk/gui.c | 122 ++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 63 insertions(+), 59 deletions(-) (limited to 'gtk/gui.c') diff --git a/gtk/gui.c b/gtk/gui.c index 017057217..cd779bdce 100644 --- a/gtk/gui.c +++ b/gtk/gui.c @@ -950,67 +950,71 @@ uint32_t gtk_gui_gdkkey_to_nskey(GdkEventKey *key) * everything that the RISC OS version does. But this will do for * now. I hope. */ - switch (key->keyval) - { - case GDK_BackSpace: - if (key->state & GDK_SHIFT_MASK) - return KEY_DELETE_LINE_START; - else - return KEY_DELETE_LEFT; - case GDK_Delete: - if (key->state & GDK_SHIFT_MASK) - return KEY_DELETE_LINE_END; - else - return KEY_DELETE_RIGHT; - case GDK_Linefeed: return 13; - case GDK_Return: return 10; - case GDK_Left: return KEY_LEFT; - case GDK_Right: return KEY_RIGHT; - case GDK_Up: return KEY_UP; - case GDK_Down: return KEY_DOWN; - case GDK_Home: - if (key->state & GDK_CONTROL_MASK) - return KEY_TEXT_START; - else - return KEY_LINE_START; - case GDK_End: - if (key->state & GDK_CONTROL_MASK) - return KEY_TEXT_END; - else - return KEY_LINE_END; - case GDK_Page_Up: - return KEY_PAGE_UP; - case GDK_Page_Down: - return KEY_PAGE_DOWN; - case 'a': - if (key->state & GDK_CONTROL_MASK) - return KEY_SELECT_ALL; - return gdk_keyval_to_unicode(key->keyval); - case 'u': - if (key->state & GDK_CONTROL_MASK) - return KEY_CLEAR_SELECTION; - return gdk_keyval_to_unicode(key->keyval); - case GDK_Escape: - return KEY_ESCAPE; + switch (key->keyval) { + + case GDK_Tab: + return KEY_TAB; + + case GDK_BackSpace: + if (key->state & GDK_SHIFT_MASK) + return KEY_DELETE_LINE_START; + else + return KEY_DELETE_LEFT; + case GDK_Delete: + if (key->state & GDK_SHIFT_MASK) + return KEY_DELETE_LINE_END; + else + return KEY_DELETE_RIGHT; + case GDK_Linefeed: return 13; + case GDK_Return: return 10; + case GDK_Left: return KEY_LEFT; + case GDK_Right: return KEY_RIGHT; + case GDK_Up: return KEY_UP; + case GDK_Down: return KEY_DOWN; + case GDK_Home: + if (key->state & GDK_CONTROL_MASK) + return KEY_TEXT_START; + else + return KEY_LINE_START; + case GDK_End: + if (key->state & GDK_CONTROL_MASK) + return KEY_TEXT_END; + else + return KEY_LINE_END; + case GDK_Page_Up: + return KEY_PAGE_UP; + case GDK_Page_Down: + return KEY_PAGE_DOWN; + case 'a': + if (key->state & GDK_CONTROL_MASK) + return KEY_SELECT_ALL; + return gdk_keyval_to_unicode(key->keyval); + case 'u': + if (key->state & GDK_CONTROL_MASK) + return KEY_CLEAR_SELECTION; + return gdk_keyval_to_unicode(key->keyval); + case GDK_Escape: + return KEY_ESCAPE; /* Modifiers - do nothing for now */ - case GDK_Shift_L: - case GDK_Shift_R: - case GDK_Control_L: - case GDK_Control_R: - case GDK_Caps_Lock: - case GDK_Shift_Lock: - case GDK_Meta_L: - case GDK_Meta_R: - case GDK_Alt_L: - case GDK_Alt_R: - case GDK_Super_L: - case GDK_Super_R: - case GDK_Hyper_L: - case GDK_Hyper_R: return 0; - - default: return gdk_keyval_to_unicode( - key->keyval); + case GDK_Shift_L: + case GDK_Shift_R: + case GDK_Control_L: + case GDK_Control_R: + case GDK_Caps_Lock: + case GDK_Shift_Lock: + case GDK_Meta_L: + case GDK_Meta_R: + case GDK_Alt_L: + case GDK_Alt_R: + case GDK_Super_L: + case GDK_Super_R: + case GDK_Hyper_L: + case GDK_Hyper_R: + return 0; + + default: + return gdk_keyval_to_unicode(key->keyval); } } -- cgit v1.2.3