diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2022-05-06 07:05:27 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2022-05-06 07:05:27 -0700 |
commit | 668c0d87b56e3f1b8fa7992bbd1709dbaaa89470 (patch) | |
tree | a2e6a663be111a5004787304a87513d0f7325edf | |
parent | f8cd829a181260f4293f226cf77332cdae05b665 (diff) | |
download | pw-668c0d87b56e3f1b8fa7992bbd1709dbaaa89470.tar.gz pw-668c0d87b56e3f1b8fa7992bbd1709dbaaa89470.tar.bz2 pw-668c0d87b56e3f1b8fa7992bbd1709dbaaa89470.zip |
Fix pane display bugs.
-rw-r--r-- | pw.c | 45 |
1 files changed, 39 insertions, 6 deletions
@@ -376,8 +376,17 @@ static void drawline(pwstate *pw, const char *line, int lineno) if (vsplit1 > 0) { if (len <= vsplit1) { - fputs(line, stdout); - columns -= len; + if (!vsplit2) { + fputs(line, stdout); + columns -= len; + } else { + unsigned spaces = vsplit1 - len + 1; + fputs(line, stdout); + for (unsigned i = 0; i < spaces; i++) + putchar(' '); + columns -= vsplit1; + } + line += len; len = 0; } else { for (unsigned i = 0; i < vsplit1; i++) @@ -393,16 +402,40 @@ static void drawline(pwstate *pw, const char *line, int lineno) unsigned pos = line - oline; unsigned delta = vs2pos - pos; if (pos + len <= vs2pos) { - len = 0; + unsigned i = vsplit2; + if (vsplit1) { + hlchar(pw, '|'); + i--; + } + for (; i > 0; i--) + putchar(' '); + columns -= vsplit2; + if (len < vsplit2) { + line += len; + len = 0; + } else { + len -= vsplit2; + line += vsplit2; + } + endmark = 1; } else if (len - delta <= vsplit2) { + unsigned spaces = vsplit2 - (len - delta) + 1; if (vsplit1) { hlchar(pw, '|'); delta++; } fputs(line + delta, stdout); - columns -= len; - len = 0; - endmark = 0; + for (unsigned i = spaces; i > 0; i--) + putchar(' '); + columns -= vsplit2; + if (len < vsplit2) { + line += len; + len = 0; + } else { + len -= vsplit2; + line += vsplit2; + } + endmark = 1; } else { unsigned start = 0; if (vsplit1) { |