Move the rest of mutt "things" into a window as well.
[apps/madmutt.git] / lib-ui / menu.c
index 0a1d716..f8a2565 100644 (file)
@@ -18,8 +18,6 @@
 #include <imap/imap.h>
 #include <lib-ui/sidebar.h>
 
-#define SW              (option(OPTMBOXPANE)?SidebarWidth:0)
-
 extern size_t UngetCount;
 
 static void print_enriched_string (int attr, unsigned char *s, int do_color)
@@ -33,56 +31,56 @@ static void print_enriched_string (int attr, unsigned char *s, int do_color)
   while (*s) {
     if (*s < M_TREE_MAX) {
       if (do_color)
-        SETCOLOR (MT_COLOR_TREE);
+        SETCOLOR(main_w, MT_COLOR_TREE);
       while (*s && *s < M_TREE_MAX) {
         switch (*s) {
         case M_TREE_LLCORNER:
-          waddch (stdscr, ACS_LLCORNER);
+          waddch (main_w, ACS_LLCORNER);
           break;
         case M_TREE_ULCORNER:
-          waddch (stdscr, ACS_ULCORNER);
+          waddch (main_w, ACS_ULCORNER);
           break;
         case M_TREE_LTEE:
-          waddch (stdscr, ACS_LTEE);
+          waddch (main_w, ACS_LTEE);
           break;
         case M_TREE_HLINE:
-          waddch (stdscr, ACS_HLINE);
+          waddch (main_w, ACS_HLINE);
           break;
         case M_TREE_VLINE:
-          waddch (stdscr, ACS_VLINE);
+          waddch (main_w, ACS_VLINE);
           break;
         case M_TREE_TTEE:
-          waddch (stdscr, ACS_TTEE);
+          waddch (main_w, ACS_TTEE);
           break;
         case M_TREE_BTEE:
-          waddch (stdscr, ACS_BTEE);
+          waddch (main_w, ACS_BTEE);
           break;
         case M_TREE_SPACE:
-          waddch (stdscr, ' ');
+          waddch (main_w, ' ');
           break;
         case M_TREE_RARROW:
-          waddch (stdscr, '>');
+          waddch (main_w, '>');
           break;
         case M_TREE_STAR:
-          waddch (stdscr, '*');          /* fake thread indicator */
+          waddch (main_w, '*');          /* fake thread indicator */
           break;
         case M_TREE_HIDDEN:
-          waddch (stdscr, '&');
+          waddch (main_w, '&');
           break;
         case M_TREE_EQUALS:
-          waddch (stdscr, '=');
+          waddch (main_w, '=');
           break;
         case M_TREE_MISSING:
-          waddch (stdscr, '?');
+          waddch (main_w, '?');
           break;
         }
         s++, n--;
       }
       if (do_color)
-        wattrset (stdscr, attr);
+        wattrset (main_w, attr);
     }
     else if ((k = mbrtowc (&wc, (char *) s, n, &mbstate)) != (size_t)-1) {
-      waddnstr (stdscr, (char *) s, k);
+      waddnstr (main_w, (char *) s, k);
       s += k, n -= k;
     }
     else
@@ -102,7 +100,7 @@ static void menu_make_entry (char *s, int l, MUTTMENU * menu, int i)
 
 static void menu_pad_string (char *s, size_t n)
 {
-  int cols = COLS - SW;
+  int cols = getmaxx(main_w);
   char *tmpbuf = p_new(char, n);
 
   mutt_format_string (tmpbuf, n, cols, cols, 0, ' ', s, m_strlen(s), 1);
@@ -113,15 +111,15 @@ static void menu_pad_string (char *s, size_t n)
 
 void menu_redraw_full (MUTTMENU * menu)
 {
-  SETCOLOR (MT_COLOR_NORMAL);
-  /* wclear(stdscr) doesn't optimize screen redraws */
-  wmove (stdscr, 0, 0);
-  wclrtobot (stdscr);
-
-  SETCOLOR (MT_COLOR_STATUS);
-  wmove (stdscr, option (OPTSTATUSONTOP) ? LINES - 2 : 0, SW);
-  mutt_paddstr (COLS-SW, "");
-  SETCOLOR (MT_COLOR_NORMAL);
+  SETCOLOR(main_w, MT_COLOR_NORMAL);
+  /* wclear() doesn't optimize screen redraws */
+  wmove (main_w, 0, 0);
+  wclrtobot (main_w);
+
+  SETCOLOR(main_w, MT_COLOR_STATUS);
+  wmove (main_w, option (OPTSTATUSONTOP) ? LINES - 2 : 0, 0);
+  mutt_paddstr (main_w, getmaxx(main_w), "");
+  SETCOLOR(main_w, MT_COLOR_NORMAL);
   menu->offset = 1;
   menu->pagelen = LINES - 3;
   mutt_show_error ();
@@ -134,10 +132,10 @@ void menu_redraw_status (MUTTMENU * menu)
   char buf[STRING];
 
   snprintf (buf, sizeof (buf), M_MODEFMT, menu->title);
-  SETCOLOR (MT_COLOR_STATUS);
-  wmove (stdscr, option (OPTSTATUSONTOP) ? 0 : LINES - 2, SW);
-  mutt_paddstr (COLS-SW, buf);
-  SETCOLOR (MT_COLOR_NORMAL);
+  SETCOLOR(main_w, MT_COLOR_STATUS);
+  wmove (main_w, option (OPTSTATUSONTOP) ? 0 : LINES - 2, 0);
+  mutt_paddstr (main_w, getmaxx(main_w), buf);
+  SETCOLOR(main_w, MT_COLOR_NORMAL);
   menu->redraw &= ~REDRAW_STATUS;
 }
 
@@ -151,22 +149,22 @@ void menu_redraw_index (MUTTMENU * menu)
       menu_make_entry (buf, sizeof (buf), menu, i);
       menu_pad_string (buf, sizeof (buf));
 
-      wattrset (stdscr, menu->color (i));
+      wattrset (main_w, menu->color (i));
 
       if (i == menu->current) {
-        ADDCOLOR (MT_COLOR_INDICATOR);
-        BKGDSET (MT_COLOR_INDICATOR);
+        ADDCOLOR(main_w, MT_COLOR_INDICATOR);
+        BKGDSET(main_w, MT_COLOR_INDICATOR);
       }
 
-      CLEARLINE_WIN (i - menu->top + menu->offset);
+      CLEARLINE(main_w, i - menu->top + menu->offset);
 
-      wmove (stdscr, i - menu->top + menu->offset, SW);
+      wmove (main_w, i - menu->top + menu->offset, 0);
       print_enriched_string (menu->color (i), (unsigned char *) buf,
                              i != menu->current);
-      SETCOLOR (MT_COLOR_NORMAL);
-      BKGDSET (MT_COLOR_NORMAL);
+      SETCOLOR(main_w, MT_COLOR_NORMAL);
+      BKGDSET(main_w, MT_COLOR_NORMAL);
     } else {
-      CLEARLINE_WIN (i - menu->top + menu->offset);
+      CLEARLINE(main_w, i - menu->top + menu->offset);
     }
   }
   sidebar_draw ();
@@ -183,13 +181,13 @@ void menu_redraw_motion (MUTTMENU * menu)
     return;
   }
 
-  wmove (stdscr, menu->oldcurrent + menu->offset - menu->top, SW);
-  SETCOLOR (MT_COLOR_NORMAL);
-  BKGDSET (MT_COLOR_NORMAL);
+  wmove (main_w, menu->oldcurrent + menu->offset - menu->top, 0);
+  SETCOLOR(main_w, MT_COLOR_NORMAL);
+  BKGDSET(main_w, MT_COLOR_NORMAL);
 
   /* erase the current indicator */
-  wattrset (stdscr, menu->color (menu->oldcurrent));
-  wclrtoeol (stdscr);
+  wattrset (main_w, menu->color (menu->oldcurrent));
+  wclrtoeol (main_w);
   menu_make_entry (buf, sizeof (buf), menu, menu->oldcurrent);
   menu_pad_string (buf, sizeof (buf));
   print_enriched_string (menu->color (menu->oldcurrent),
@@ -198,15 +196,15 @@ void menu_redraw_motion (MUTTMENU * menu)
   /* now draw the new one to reflect the change */
   menu_make_entry (buf, sizeof (buf), menu, menu->current);
   menu_pad_string (buf, sizeof (buf));
-  wattrset (stdscr, menu->color (menu->current));
-  ADDCOLOR (MT_COLOR_INDICATOR);
-  BKGDSET (MT_COLOR_INDICATOR);
-  CLEARLINE_WIN (menu->current - menu->top + menu->offset);
-  wmove (stdscr, menu->current + menu->offset - menu->top, SW);
+  wattrset (main_w, menu->color (menu->current));
+  ADDCOLOR(main_w, MT_COLOR_INDICATOR);
+  BKGDSET(main_w, MT_COLOR_INDICATOR);
+  CLEARLINE(main_w, menu->current - menu->top + menu->offset);
+  wmove (main_w, menu->current + menu->offset - menu->top, 0);
   print_enriched_string (menu->color (menu->current), (unsigned char *) buf,
                          0);
-  SETCOLOR (MT_COLOR_NORMAL);
-  BKGDSET (MT_COLOR_NORMAL);
+  SETCOLOR(main_w, MT_COLOR_NORMAL);
+  BKGDSET(main_w, MT_COLOR_NORMAL);
 
   menu->redraw &= REDRAW_STATUS;
 }
@@ -215,18 +213,18 @@ void menu_redraw_current (MUTTMENU * menu)
 {
   char buf[STRING];
 
-  wmove (stdscr, menu->current + menu->offset - menu->top, SW);
+  wmove (main_w, menu->current + menu->offset - menu->top, 0);
   menu_make_entry (buf, sizeof (buf), menu, menu->current);
   menu_pad_string (buf, sizeof (buf));
 
-  wattrset (stdscr, menu->color (menu->current));
-  ADDCOLOR (MT_COLOR_INDICATOR);
-  BKGDSET (MT_COLOR_INDICATOR);
-  wclrtoeol (stdscr);
+  wattrset (main_w, menu->color (menu->current));
+  ADDCOLOR(main_w, MT_COLOR_INDICATOR);
+  BKGDSET(main_w, MT_COLOR_INDICATOR);
+  wclrtoeol (main_w);
   print_enriched_string (menu->color (menu->current), (unsigned char *) buf,
                          0);
-  SETCOLOR (MT_COLOR_NORMAL);
-  BKGDSET (MT_COLOR_NORMAL);
+  SETCOLOR(main_w, MT_COLOR_NORMAL);
+  BKGDSET(main_w, MT_COLOR_NORMAL);
 
   menu->redraw &= REDRAW_STATUS;
 }
@@ -242,9 +240,9 @@ static void menu_redraw_prompt (MUTTMENU * menu)
     if (*Errorbuf)
       mutt_clear_error ();
 
-    SETCOLOR (MT_COLOR_NORMAL);
-    mvwaddstr (stdscr, LINES - 1, 0, menu->prompt);
-    wclrtoeol (stdscr);
+    SETCOLOR(main_w, MT_COLOR_NORMAL);
+    mvwaddstr (main_w, LINES - 1, 0, menu->prompt);
+    wclrtoeol (main_w);
   }
 }
 
@@ -523,7 +521,7 @@ MUTTMENU *mutt_new_menu (void)
   p->top = 0;
   p->offset = 1;
   p->redraw = REDRAW_FULL;
-  p->pagelen = PAGELEN;
+  p->pagelen = LINES - 3;
   p->color = default_color;
   p->search = menu_search_generic;
   return (p);
@@ -688,15 +686,8 @@ int mutt_menuLoop (MUTTMENU * menu)
       return OP_REDRAW;
 
     menu->oldcurrent = menu->current;
-
-    if (option (OPTBRAILLEFRIENDLY))
-      wmove (stdscr, menu->current - menu->top + menu->offset, SW);
-    else
-      wmove (stdscr, menu->current - menu->top + menu->offset, COLS - 1);
-
     mutt_refresh ();
 
-
     /* try to catch dialog keys before ops */
     if (menu->dialog && menu_dialog_dokey (menu, &i) == 0)
       return i;
@@ -704,11 +695,11 @@ int mutt_menuLoop (MUTTMENU * menu)
     i = km_dokey (menu->menu);
     if (i == OP_TAG_PREFIX || i == OP_TAG_PREFIX_COND) {
       if (menu->tagged) {
-        mvwaddstr (stdscr, LINES - 1, 0, "Tag-");
-        wclrtoeol (stdscr);
+        mvwaddstr (main_w, LINES - 1, 0, "Tag-");
+        wclrtoeol (main_w);
         i = km_dokey (menu->menu);
         menu->tagprefix = 1;
-        CLEARLINE (LINES - 1);
+        CLEARLINE(main_w, LINES - 1);
       }
       else if (i == OP_TAG_PREFIX) {
         mutt_error _("No tagged entries.");
@@ -868,7 +859,7 @@ int mutt_menuLoop (MUTTMENU * menu)
       break;
 
     case OP_REDRAW:
-      clearok (stdscr, TRUE);
+      clearok (main_w, TRUE);
       menu->redraw = REDRAW_FULL;
       break;