diff options
-rw-r--r-- | sdn.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
@@ -665,7 +665,8 @@ fun update () { erase (); int available = visible_lines (); - int used = min (available, int (g.entries.size ()) - g.offset); + int all = g.entries.size (); + int used = min (available, all - g.offset); for (int i = 0; i < used; i++) { auto index = g.offset + i; bool selected = index == g.cursor; @@ -693,7 +694,19 @@ fun update () { move (LINES - 2, 0); attrset (g.attrs[g.AT_BAR]); - hline (' ', COLS - print (bar, COLS)); + int unused = COLS - print (bar, COLS); + hline (' ', unused); + + auto pos = to_wstring (int (double (g.offset) / all * 100)) + L"%"; + if (used == all) + pos = L"All"; + else if (g.offset == 0) + pos = L"Top"; + else if (g.offset + used == all) + pos = L"Bot"; + + if (int (pos.size ()) < unused) + mvaddwstr (LINES - 2, COLS - pos.size (), pos.c_str ()); attrset (g.attrs[g.AT_INPUT]); curs_set (0); |