aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nnn.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/nnn.c b/nnn.c
index 8882561..c54c112 100644
--- a/nnn.c
+++ b/nnn.c
@@ -1919,12 +1919,20 @@ redraw(char *path)
{
static int nlines, i;
static size_t ncols;
+ static bool mode_changed;
+ mode_changed = FALSE;
nlines = MIN(LINES - 4, ndents);
/* Clean screen */
erase();
+ /* Fail redraw if < than 10 columns */
+ if (COLS < 10) {
+ printmsg("Too few columns!");
+ return;
+ }
+
/* Strip trailing slashes */
for (i = xstrlen(path) - 1; i > 0; --i)
if (path[i] == '/')
@@ -1944,7 +1952,16 @@ redraw(char *path)
ncols = COLS;
if (ncols > PATH_MAX)
ncols = PATH_MAX;
- /* - xstrlen(CWD) - 1 = 6 */
+
+ /* Fallback to light mode if less than 35 columns */
+ if (ncols < 35 && cfg.showdetail) {
+ cfg.showdetail ^= 1;
+ printptr = &printent;
+ mode_changed = TRUE;
+ }
+
+
+ /* Show CWD: - xstrlen(CWD) - 1 = 6 */
g_buf[ncols - 6] = '\0';
printw(CWD "%s\n\n", g_buf);
@@ -2014,6 +2031,11 @@ redraw(char *path)
} else
printmsg("0 items");
}
+
+ if (mode_changed) {
+ cfg.showdetail ^= 1;
+ printptr = &printent_long;
+ }
}
static void