Avoid the blinkings.
authorFrancois Fleuret <francois@fleuret.org>
Wed, 27 May 2009 06:36:26 +0000 (08:36 +0200)
committerFrancois Fleuret <francois@fleuret.org>
Wed, 27 May 2009 06:36:26 +0000 (08:36 +0200)
The update now uses clrtoeol() and clrtobot() instead of clear() so
that lines are cleared before being re-displayed, without a global
blink. Added the ^L key to refresh the screen globally.

REVISION_NUMBER
selector.cc

index 0d667b5..15c44e9 100644 (file)
@@ -1 +1 @@
-148
+149
index 27225b9..0cd620a 100644 (file)
@@ -349,7 +349,6 @@ void update_screen(int *current_line, int *temporary_line, int motion,
 
   int nb_printed_lines = 0;
 
-  clear();
   use_default_colors();
   addstr("\n");
 
@@ -445,6 +444,8 @@ void update_screen(int *current_line, int *temporary_line, int motion,
           buffer[k++] = '\n';
           buffer[k++] = '\0';
 
+          clrtoeol();
+
           // Highlight the highlighted line ...
 
           if(l == new_line) {
@@ -479,6 +480,8 @@ void update_screen(int *current_line, int *temporary_line, int motion,
     addnstr("[empty choice]\n", console_width);
   }
 
+  clrtobot();
+
   // Draw the modeline
 
   move(0, 0);
@@ -996,6 +999,11 @@ int main(int argc, char **argv) {
       kill_after_cursor(pattern, &cursor_position);
     }
 
+    else if(key == '\014') { // ^L
+      // I suspect that we may sometime mess up the display
+      clear();
+    }
+
     update_screen(&current_line, &temporary_line, motion,
                   nb_lines, labels, cursor_position, pattern);