Position indicator like in vi

This commit is contained in:
Přemysl Eric Janouch 2019-09-27 22:38:48 +02:00
parent 2c847fb4a3
commit bf38e4e9ea
Signed by: p
GPG Key ID: A0420B94F92B9493
1 changed files with 15 additions and 2 deletions

17
sdn.cpp
View File

@ -665,7 +665,8 @@ fun update () {
erase (); erase ();
int available = visible_lines (); 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++) { for (int i = 0; i < used; i++) {
auto index = g.offset + i; auto index = g.offset + i;
bool selected = index == g.cursor; bool selected = index == g.cursor;
@ -693,7 +694,19 @@ fun update () {
move (LINES - 2, 0); move (LINES - 2, 0);
attrset (g.attrs[g.AT_BAR]); 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]); attrset (g.attrs[g.AT_INPUT]);
curs_set (0); curs_set (0);