]> granicus.if.org Git - neomutt/commitdiff
refactor: clearok() to mutt_window_clear_screen()
authorRichard Russon <rich@flatcap.org>
Fri, 27 Sep 2019 23:09:17 +0000 (00:09 +0100)
committerRichard Russon <rich@flatcap.org>
Sat, 28 Sep 2019 02:18:42 +0000 (03:18 +0100)
Encapsulate a curses function to reduce dependencies.

curs_lib.c
enter.c
index.c
menu.c
mutt_window.c
mutt_window.h
pager.c

index 71426811212cf776b135c36dd1f716fdc72f0160..797323fc349f197823f43059395d3d642b2c7412 100644 (file)
@@ -127,7 +127,7 @@ void mutt_refresh(void)
 void mutt_need_hard_redraw(void)
 {
   keypad(stdscr, true);
-  clearok(stdscr, true);
+  mutt_window_clear_screen();
   mutt_menu_set_current_redraw_full();
 }
 
@@ -268,7 +268,7 @@ int mutt_get_field_full(const char *field, char *buf, size_t buflen, CompletionF
     {
       SigWinch = 0;
       mutt_resize_screen();
-      clearok(stdscr, true);
+      mutt_window_clear_screen();
       mutt_menu_current_redraw();
     }
     mutt_window_clearline(MuttMessageWindow, 0);
@@ -329,7 +329,7 @@ void mutt_edit_file(const char *editor, const char *file)
   /* the terminal may have been resized while the editor owned it */
   mutt_resize_screen();
   keypad(stdscr, true);
-  clearok(stdscr, true);
+  mutt_window_clear_screen();
 
   mutt_buffer_pool_release(&cmd);
 }
@@ -381,7 +381,7 @@ enum QuadOption mutt_yesorno(const char *msg, enum QuadOption def)
       {
         SigWinch = 0;
         mutt_resize_screen();
-        clearok(stdscr, true);
+        mutt_window_clear_screen();
         mutt_menu_current_redraw();
       }
       if (MuttMessageWindow->cols)
@@ -845,7 +845,7 @@ int mutt_multi_choice(const char *prompt, const char *letters)
       {
         SigWinch = 0;
         mutt_resize_screen();
-        clearok(stdscr, true);
+        mutt_window_clear_screen();
         mutt_menu_current_redraw();
       }
       if (MuttMessageWindow->cols)
diff --git a/enter.c b/enter.c
index 1750801060db8d9688f83fde148c6fe2025b9df1..0c86de0e8f50b44543514964173e6e20cf54762b 100644 (file)
--- a/enter.c
+++ b/enter.c
@@ -153,7 +153,7 @@ int mutt_enter_string(char *buf, size_t buflen, int col, CompletionFlags flags)
     {
       SigWinch = 0;
       mutt_resize_screen();
-      clearok(stdscr, true);
+      mutt_window_clear_screen();
     }
     rc = mutt_enter_string_full(buf, buflen, col, flags, false, NULL, NULL, es);
   } while (rc == 1);
diff --git a/index.c b/index.c
index c59d2a51e37701efb735a59e311cb82a09df3a2c..226c0cb4fc05c5939dcfa5e47980da8f1b7b31b0 100644 (file)
--- a/index.c
+++ b/index.c
@@ -851,6 +851,9 @@ int index_color(int line)
  */
 void mutt_draw_statusline(int cols, const char *buf, size_t buflen)
 {
+  if (!buf)
+    return;
+
   size_t i = 0;
   size_t offset = 0;
   bool found = false;
@@ -864,9 +867,6 @@ void mutt_draw_statusline(int cols, const char *buf, size_t buflen)
     int last;
   } *syntax = NULL;
 
-  if (!buf || !stdscr)
-    return;
-
   do
   {
     struct ColorLine *cl = NULL;
@@ -1239,7 +1239,7 @@ int mutt_index_menu(void)
         menu->top = 0; /* so we scroll the right amount */
         /* force a real complete redraw.  clrtobot() doesn't seem to be able
          * to handle every case without this.  */
-        clearok(stdscr, true);
+        mutt_window_clear_screen();
         continue;
       }
 
@@ -1745,7 +1745,7 @@ int mutt_index_menu(void)
         break;
 
       case OP_REDRAW:
-        clearok(stdscr, true);
+        mutt_window_clear_screen();
         menu->redraw = REDRAW_FULL;
         break;
 
diff --git a/menu.c b/menu.c
index 397a0216043055b8ed15b6c893a4057a67aaca6b..822b484d5d8ffb7fd0f0d52e6fa1180355f8ee01 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -358,9 +358,7 @@ static void menu_pad_string(struct Menu *menu, char *buf, size_t buflen)
 void menu_redraw_full(struct Menu *menu)
 {
   mutt_curses_set_color(MT_COLOR_NORMAL);
-  /* clear() doesn't optimize screen redraws */
-  mutt_window_move_abs(0, 0);
-  mutt_window_clrtobot();
+  mutt_window_clear_screen();
 
   if (C_Help)
   {
@@ -1082,8 +1080,7 @@ void mutt_menu_pop_current(struct Menu *menu)
   else
   {
     CurrentMenu = MENU_MAIN;
-    mutt_window_move_abs(0, 0);
-    mutt_window_clrtobot();
+    mutt_window_clear_screen();
   }
 }
 
@@ -1435,7 +1432,7 @@ int mutt_menu_loop(struct Menu *menu)
     {
       mutt_resize_screen();
       SigWinch = 0;
-      clearok(stdscr, true); /* force complete redraw */
+      mutt_window_clear_screen();
     }
 
     if (i < 0)
@@ -1571,7 +1568,7 @@ int mutt_menu_loop(struct Menu *menu)
         break;
 
       case OP_REDRAW:
-        clearok(stdscr, true);
+        mutt_window_clear_screen();
         menu->redraw = REDRAW_FULL;
         break;
 
index e0e4c3c20ef8240bc8f6d3b31ebd44d3757253ae..909aaf8c02398bc77c6d1d21ce1529b2390dec74 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "config.h"
 #include <stdarg.h>
+#include <stdbool.h>
 #include <string.h>
 #include "mutt/mutt.h"
 #include "mutt_window.h"
@@ -431,3 +432,11 @@ int mutt_window_printf(const char *fmt, ...)
 
   return rc;
 }
+
+/**
+ * mutt_window_clear_screen - Clear the entire screen
+ */
+void mutt_window_clear_screen(void)
+{
+  clearok(stdscr, true);
+}
index ac3c0e6ee46a78a2116763e2d90da37c688bee51..05345164fe412d14b8b6d4f6f5ee5f67bc3bb92f 100644 (file)
@@ -61,6 +61,7 @@ int                mutt_window_wrap_cols          (int width, short wrap);
 int  mutt_window_addch    (int ch);
 int  mutt_window_addnstr  (const char *str, int num);
 int  mutt_window_addstr   (const char *str);
+void mutt_window_clear_screen(void);
 void mutt_window_clearline(struct MuttWindow *win, int row);
 void mutt_window_clrtobot (void);
 void mutt_window_clrtoeol (struct MuttWindow *win);
diff --git a/pager.c b/pager.c
index 5c63186ed596c5a4c947e1da24edf705a314c927..fd9770731aac44550174a686b36db940e8c059ff 100644 (file)
--- a/pager.c
+++ b/pager.c
@@ -1942,9 +1942,7 @@ static void pager_custom_redraw(struct Menu *pager_menu)
   if (pager_menu->redraw & REDRAW_FULL)
   {
     mutt_curses_set_color(MT_COLOR_NORMAL);
-    /* clear() doesn't optimize screen redraws */
-    mutt_window_move_abs(0, 0);
-    mutt_window_clrtobot();
+    mutt_window_clear_screen();
 
     if (IsEmail(rd->extra) && Context && ((Context->mailbox->vcount + 1) < C_PagerIndexLines))
       rd->indexlen = Context->mailbox->vcount + 1;
@@ -2460,7 +2458,7 @@ int mutt_pager(const char *banner, const char *fname, PagerFlags flags, struct P
     {
       SigWinch = 0;
       mutt_resize_screen();
-      clearok(stdscr, true); /* force complete redraw */
+      mutt_window_clear_screen();
 
       if (flags & MUTT_PAGER_RETWINCH)
       {
@@ -2929,7 +2927,7 @@ int mutt_pager(const char *banner, const char *fname, PagerFlags flags, struct P
         break;
 
       case OP_REDRAW:
-        clearok(stdscr, true);
+        mutt_window_clear_screen();
         pager_menu->redraw = REDRAW_FULL;
         break;