summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2008-06-19 09:38:34 -0400
committerRay Strode <rstrode@redhat.com>2008-06-19 09:38:34 -0400
commit83a23fc4565cf06c62fc1abe7762084e1eaa3f66 (patch)
treef0c2fb55e0cd6d42c8ae90b0e0a2c069d46dbffd
parent6bda9aa4d1bb949cc9aa448b2b43fbb46e667691 (diff)
downloadplymouth-83a23fc4565cf06c62fc1abe7762084e1eaa3f66.tar.gz
plymouth-83a23fc4565cf06c62fc1abe7762084e1eaa3f66.tar.xz
plymouth-83a23fc4565cf06c62fc1abe7762084e1eaa3f66.zip
add new api for moving text cursor around
-rw-r--r--src/libplybootsplash/ply-window.c12
-rw-r--r--src/libplybootsplash/ply-window.h3
2 files changed, 15 insertions, 0 deletions
diff --git a/src/libplybootsplash/ply-window.c b/src/libplybootsplash/ply-window.c
index 304235d..8345b72 100644
--- a/src/libplybootsplash/ply-window.c
+++ b/src/libplybootsplash/ply-window.c
@@ -53,6 +53,8 @@
#define KEY_RETURN '\r'
#define KEY_BACKSPACE '\177'
+#define MOVE_CURSOR_SEQUNCE(column,row) "\033[f"#row","#column
+
struct _ply_window
{
ply_event_loop_t *loop;
@@ -438,6 +440,16 @@ ply_window_get_number_of_text_columns (ply_window_t *window)
return window->number_of_text_columns;
}
+void
+ply_window_set_text_cursor_position (ply_window_t *window,
+ int column,
+ int row)
+{
+ write (window->tty_fd,
+ MOVE_CURSOR_SEQUNCE(row,column),
+ strlen (MOVE_CURSOR_SEQUNCE(row,column)));
+}
+
static void
ply_window_detach_from_event_loop (ply_window_t *window)
{
diff --git a/src/libplybootsplash/ply-window.h b/src/libplybootsplash/ply-window.h
index 0b9b645..ff45aae 100644
--- a/src/libplybootsplash/ply-window.h
+++ b/src/libplybootsplash/ply-window.h
@@ -74,6 +74,9 @@ bool ply_window_set_mode (ply_window_t *window,
ply_window_mode_t mode);
int ply_window_get_number_of_text_rows (ply_window_t *window);
int ply_window_get_number_of_text_columns (ply_window_t *window);
+void ply_window_set_text_cursor_position (ply_window_t *window,
+ int column,
+ int row);
void ply_window_attach_to_event_loop (ply_window_t *window,
ply_event_loop_t *loop);