From 219bed8179b62db44b3a55e445733dcd9feed785 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 23 Apr 2014 19:10:44 -0400 Subject: refactor --- src/window-xlib.c | 63 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/src/window-xlib.c b/src/window-xlib.c index b19e9d1..0b4b58b 100644 --- a/src/window-xlib.c +++ b/src/window-xlib.c @@ -90,6 +90,8 @@ static void runes_window_backend_draw_cursor(RunesTerm *t); static void runes_window_backend_set_urgent(RunesTerm *t); static void runes_window_backend_clear_urgent(RunesTerm *t); static void runes_window_backend_handle_key_event(RunesTerm *t, XKeyEvent *e); +static struct function_key *runes_window_backend_find_key_sequence( + RunesTerm *t, KeySym sym); static void runes_window_backend_handle_button_event( RunesTerm *t, XButtonEvent *e); static void runes_window_backend_handle_expose_event( @@ -563,49 +565,50 @@ static void runes_window_backend_handle_key_event(RunesTerm *t, XKeyEvent *e) case XLookupKeySym: { struct function_key *key; - if (t->application_keypad) { - if (t->application_cursor) { - key = &application_cursor_keys[0]; - while (key->sym != XK_VoidSymbol) { - if (key->sym == sym) { - break; - } - key++; - } - if (key->sym != XK_VoidSymbol) { - runes_pty_backend_write(t, key->str, key->len); - break; - } - } - key = &application_keypad_keys[0]; + key = runes_window_backend_find_key_sequence(t, sym); + if (key->sym != XK_VoidSymbol) { + runes_pty_backend_write(t, key->str, key->len); + } + break; + } + default: + break; + } + free(buf); +} + +static struct function_key *runes_window_backend_find_key_sequence( + RunesTerm *t, KeySym sym) +{ + struct function_key *key; + + if (t->application_keypad) { + if (t->application_cursor) { + key = &application_cursor_keys[0]; while (key->sym != XK_VoidSymbol) { if (key->sym == sym) { - break; + return key; } key++; } - if (key->sym != XK_VoidSymbol) { - runes_pty_backend_write(t, key->str, key->len); - break; - } } - key = &keys[0]; + key = &application_keypad_keys[0]; while (key->sym != XK_VoidSymbol) { if (key->sym == sym) { - break; + return key; } key++; } - if (key->sym != XK_VoidSymbol) { - runes_pty_backend_write(t, key->str, key->len); - break; - } - break; } - default: - break; + key = &keys[0]; + while (key->sym != XK_VoidSymbol) { + if (key->sym == sym) { + return key; + } + key++; } - free(buf); + + return key; } static void runes_window_backend_handle_button_event( -- cgit v1.2.3-54-g00ecf