diff options
author | Přemysl Janouch <p@janouch.name> | 2019-09-27 22:38:48 +0200 |
---|---|---|
committer | Přemysl Janouch <p@janouch.name> | 2019-09-27 22:38:48 +0200 |
commit | bf38e4e9eaa08fbfeee69e3340594819942abf13 (patch) | |
tree | 832be88b16c331cc77e8f505038d1d071f04e9a4 /sdn.cpp | |
parent | 2c847fb4a3af99379f283f85dff7983494ca34bc (diff) | |
download | sdn-bf38e4e9eaa08fbfeee69e3340594819942abf13.tar.gz sdn-bf38e4e9eaa08fbfeee69e3340594819942abf13.tar.xz sdn-bf38e4e9eaa08fbfeee69e3340594819942abf13.zip |
Position indicator like in vi
Diffstat (limited to 'sdn.cpp')
-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); |