summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2008-05-28 16:57:34 -0400
committerRay Strode <rstrode@redhat.com>2008-05-28 16:57:34 -0400
commit93ff1b78822b7855a58d3a7416f07f36eaa3b837 (patch)
tree0c1ce8db20c1510b8d85e04bd238fef5b9e28ce0 /src
parent2dab183212e85b8d59c6a8c4edb7dd3e223540a9 (diff)
downloadplymouth-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.c48
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: