From bd4551e2ef283639b26fdbf768b261cb0c51dbdd Mon Sep 17 00:00:00 2001 From: ridiculousfish Date: Fri, 9 Nov 2012 15:19:54 -0800 Subject: [PATCH] Another attempt to improve right prompt on Linux --- screen.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/screen.cpp b/screen.cpp index 5caa3d010..d42ea03bf 100644 --- a/screen.cpp +++ b/screen.cpp @@ -853,9 +853,13 @@ static void s_update( screen_t *scr, const wchar_t *left_prompt, const wchar_t * s_move( scr, &output, (int)(screen_width - right_prompt_width), (int)i ); s_set_color( scr, &output, 0xffffffff); s_write_str( &output, right_prompt ); - /* We output in the last column. Some terms (Linux) push the cursor further right, past the window. Others make it "stick." Since we don't really know which is which, issue a cr so it goes back to the left. */ - s_write_str( &output, L"\r"); - scr->actual.cursor.x = 0; + /* We output in the last column. Some terms (Linux) push the cursor further right, past the window. Others make it "stick." Since we don't really know which is which, issue a cr so it goes back to the left. Note that we depend on s_move to use a cr here. + + If we expect to have more lines, move down at the same time, since vertical motion seems to avoid a flicker. + */ + int target_line = (int)i; + if (scr->desired.line_count() > 1) i++; + s_move( scr, &output, 0, target_line); } }