fix long filename display
authorLaurent Mazet <mazet@softndesign.org>
Sun, 19 Jan 2025 16:22:23 +0000 (17:22 +0100)
committerLaurent Mazet <mazet@softndesign.org>
Sun, 19 Jan 2025 16:22:23 +0000 (17:22 +0100)
display.c

index 1d374bff6498b5cc7911cd3a38cefb93dffc2eb2..693eb419713ff4677a0064e1cf71adcda11bdffc 100644 (file)
--- a/display.c
+++ b/display.c
@@ -192,6 +192,9 @@ void displaywindow (window_t *win, list_t *list, int page, int *index_x, int *in
     int i, j;
 
     win->nbcols = win->xsize / (list->width + 1);
+    if (win->nbcols == 0) {
+        win->nbcols = 1;
+    }
     win->width = win->xsize / win->nbcols;
     int n = (list->nb + win->nbcols - 1) / win->nbcols;
     int rem = list->nb - win->nbcols * (list->nb / win->nbcols);
@@ -269,7 +272,10 @@ void displaywindow (window_t *win, list_t *list, int page, int *index_x, int *in
                 attron (A_BOLD);
                 attron (A_UNDERLINE);
             }
-            mvaddstr (win->yoffset + (j % n) - page, win->xoffset + (j / n) * win->width, elem->name);
+            int k;
+            for (k = 0; (k < win->width) && (elem->name[k] != '\0'); k++) {
+                mvaddch (win->yoffset + (j % n) - page, win->xoffset + (j / n) * win->width + k, elem->name[k]);
+            }
             set_color (white);
             attron (0);
             if (j == index) {