diff options
| author | Ray Strode <rstrode@redhat.com> | 2008-05-28 16:57:34 -0400 |
|---|---|---|
| committer | Ray Strode <rstrode@redhat.com> | 2008-05-28 16:57:34 -0400 |
| commit | 93ff1b78822b7855a58d3a7416f07f36eaa3b837 (patch) | |
| tree | 0c1ce8db20c1510b8d85e04bd238fef5b9e28ce0 /src | |
| parent | 2dab183212e85b8d59c6a8c4edb7dd3e223540a9 (diff) | |
| download | plymouth-93ff1b78822b7855a58d3a7416f07f36eaa3b837.tar.gz plymouth-93ff1b78822b7855a58d3a7416f07f36eaa3b837.tar.xz plymouth-93ff1b78822b7855a58d3a7416f07f36eaa3b837.zip | |
move backspace handling in window to its own function
Diffstat (limited to 'src')
| -rw-r--r-- | src/ply-window.c | 48 |
1 files changed, 26 insertions, 22 deletions
diff --git a/src/ply-window.c b/src/ply-window.c index 71823a9..747fa3e 100644 --- a/src/ply-window.c +++ b/src/ply-window.c @@ -94,6 +94,31 @@ ply_window_new (const char *tty_name) } static void +process_backspace (ply_window_t *window) +{ + ssize_t bytes_to_remove; + ssize_t previous_character_size; + const char *bytes; + size_t size; + + bytes = ply_buffer_get_bytes (window->line_buffer); + size = ply_buffer_get_size (window->line_buffer); + + bytes_to_remove = MB_CUR_MAX; + while ((previous_character_size = mbrlen (bytes + size - bytes_to_remove, bytes_to_remove, NULL)) < bytes_to_remove && + previous_character_size > 0) + bytes_to_remove -= previous_character_size; + + if (bytes_to_remove <= size) + { + ply_buffer_remove_bytes_at_end (window->line_buffer, bytes_to_remove); + + if (window->backspace_handler != NULL) + window->backspace_handler (window->backspace_handler_user_data); + } +} + +static void process_keyboard_input (ply_window_t *window, const char *keyboard_input, size_t character_size) @@ -125,29 +150,8 @@ process_keyboard_input (ply_window_t *window, return; case KEY_BACKSPACE: - { - ssize_t bytes_to_remove; - ssize_t previous_character_size; - const char *bytes; - size_t size; ply_trace ("backspace key!"); - - bytes = ply_buffer_get_bytes (window->line_buffer); - size = ply_buffer_get_size (window->line_buffer); - - bytes_to_remove = MB_CUR_MAX; - while ((previous_character_size = mbrlen (bytes + size - bytes_to_remove, bytes_to_remove, NULL)) < bytes_to_remove && - previous_character_size > 0) - bytes_to_remove -= previous_character_size; - - if (bytes_to_remove <= size) - { - ply_buffer_remove_bytes_at_end (window->line_buffer, bytes_to_remove); - - if (window->backspace_handler != NULL) - window->backspace_handler (window->backspace_handler_user_data); - } - } + process_backspace (window); return; case KEY_RETURN: |
