]> granicus.if.org Git - neomutt/commitdiff
sidebar_on_right
authorRichard Russon <rich@flatcap.org>
Thu, 21 Apr 2016 01:32:18 +0000 (02:32 +0100)
committerRichard Russon <rich@flatcap.org>
Thu, 18 Aug 2016 15:15:32 +0000 (16:15 +0100)
curs_lib.c
init.h
mutt.h
sidebar.c

index 8b21c43fb08cea5d3221d7b2c031d7373eabc279..df7c6ada0e2e7750080f8f4f61d4ad6f0f735412 100644 (file)
@@ -541,9 +541,13 @@ void mutt_reflow_windows (void)
   {
     memcpy (MuttSidebarWindow, MuttIndexWindow, sizeof (mutt_window_t));
     MuttSidebarWindow->cols = SidebarWidth;
-
     MuttIndexWindow->cols -= SidebarWidth;
-    MuttIndexWindow->col_offset += SidebarWidth;
+
+    if (option (OPTSIDEBARONRIGHT)) {
+      MuttSidebarWindow->col_offset = COLS - SidebarWidth;
+    } else {
+      MuttIndexWindow->col_offset += SidebarWidth;
+    }
   }
 #endif
 }
diff --git a/init.h b/init.h
index 3f3f96d9dd57e3d12e609bd9e3c01f8cc3fd7d93..503307c10c16bbdfb4b332d43ae88c744973206d 100644 (file)
--- a/init.h
+++ b/init.h
@@ -2780,6 +2780,11 @@ struct option_t MuttVars[] = {
   ** \fC<sidebar-prev-new>\fP command is similarly affected, wrapping around to
   ** the end of the list.
   */
+  { "sidebar_on_right", DT_BOOL, R_BOTH|R_REFLOW, UL OPTSIDEBARONRIGHT, 0 },
+  /*
+  ** .pp
+  ** When set, the sidebar will appear on the right-hand side of the screen.
+  */
   { "sidebar_short_path", DT_BOOL, R_SIDEBAR, OPTSIDEBARSHORTPATH, 0 },
   /*
   ** .pp
diff --git a/mutt.h b/mutt.h
index 2cf55b102640049fc25711e381550be4677208ad..886acdbcd9e4a79f2ed2d4acb115b3014340f46e 100644 (file)
--- a/mutt.h
+++ b/mutt.h
@@ -437,6 +437,7 @@ enum
   OPTSIDEBARNEWMAILONLY,
   OPTSIDEBARNEXTNEWWRAP,
   OPTSIDEBARSHORTPATH,
+  OPTSIDEBARONRIGHT,
 #endif
   OPTSIGDASHES,
   OPTSIGONTOP,
index f5977402e7db206d296636c7c411df8a7346d303..1a202a660b68e399ab46f6543f7092e6ccc12055 100644 (file)
--- a/sidebar.c
+++ b/sidebar.c
@@ -487,10 +487,17 @@ static int draw_divider (int num_rows, int num_cols)
 
   SETCOLOR(MT_COLOR_DIVIDER);
 
+  int col;
+  if (option (OPTSIDEBARONRIGHT)) {
+    col = 0;
+  } else {
+    col = SidebarWidth - delim_len;
+  }
+
   int i;
   for (i = 0; i < num_rows; i++)
   {
-    mutt_window_move (MuttSidebarWindow, i, SidebarWidth - delim_len);
+    mutt_window_move (MuttSidebarWindow, i, col);
     addstr (NONULL(SidebarDividerChar));
   }
 
@@ -501,21 +508,26 @@ static int draw_divider (int num_rows, int num_cols)
  * fill_empty_space - Wipe the remaining Sidebar space
  * @first_row:  Window line to start (0-based)
  * @num_rows:   Number of rows to fill
- * @width:      Width of the Sidebar (minus the divider)
+ * @div_width:  Width in screen characters taken by the divider
+ * @num_cols:   Number of columns to fill
  *
  * Write spaces over the area the sidebar isn't using.
  */
-static void fill_empty_space (int first_row, int num_rows, int width)
+static void fill_empty_space (int first_row, int num_rows, int div_width, int num_cols)
 {
   /* Fill the remaining rows with blank space */
   SETCOLOR(MT_COLOR_NORMAL);
 
+  if (!option (OPTSIDEBARONRIGHT))
+    div_width = 0;
+
   int r;
   for (r = 0; r < num_rows; r++)
   {
-    mutt_window_move (MuttSidebarWindow, first_row + r, 0);
+    mutt_window_move (MuttSidebarWindow, first_row + r, div_width);
+
     int i;
-    for (i = 0; i < width; i++)
+    for (i = 0; i < num_cols; i++)
       addch (' ');
   }
 }
@@ -577,7 +589,12 @@ static void draw_sidebar (int num_rows, int num_cols, int div_width)
     else
       SETCOLOR(MT_COLOR_NORMAL);
 
-    mutt_window_move (MuttSidebarWindow, row, 0);
+    int col = 0;
+    if (option (OPTSIDEBARONRIGHT)) {
+      col = div_width;
+    }
+
+    mutt_window_move (MuttSidebarWindow, row, col);
     if (Context && Context->realpath &&
         !mutt_strcmp (b->realpath, Context->realpath))
     {
@@ -652,7 +669,7 @@ static void draw_sidebar (int num_rows, int num_cols, int div_width)
     row++;
   }
 
-  fill_empty_space (row, num_rows - row, w);
+  fill_empty_space (row, num_rows - row, div_width, w);
 }
 
 
@@ -684,7 +701,7 @@ void mutt_sb_draw (void)
 
   if (!Incoming)
   {
-    fill_empty_space (0, num_rows, SidebarWidth - div_width);
+    fill_empty_space (0, num_rows, div_width, num_cols - div_width);
     return;
   }