commit - 446b8c2750d7c72b978cbd0f4171d7d08c9a218a
commit + 481340ccf7f2ae08e260a374ffaad5a430cc3f57
blob - 08700995cdf4da1d19e8a29e6e36c46c1488291a
blob + 348b1d7722e39c463da898258334d5f696cc5011
--- ui.c
+++ ui.c
static void
dispatch_stdio(int fd, short ev, void *d)
{
+ struct tab *tab;
struct keymap *k;
const char *keyname;
char tmp[2] = {0};
current_map = base_map;
done:
+ tab = current_tab();
redraw_tabline();
+ redraw_modeline(tab);
redraw_minibuffer();
- restore_cursor(current_tab());
+ restore_cursor(tab);
wrefresh(tabline);
wrefresh(modeline);
static void
redraw_modeline(struct tab *tab)
{
+ double pct;
int x, y, max_x, max_y;
const char *mode = "text/gemini-mode";
const char *spin = "-\\|/";
wattron(modeline, A_REVERSE);
wmove(modeline, 0, 0);
- wprintw(modeline, "-%c %s %s ",
- spin[tab->s->loading_anim_step], mode, tab->urlstr);
+ wprintw(modeline, "-%c %s ",
+ spin[tab->s->loading_anim_step], mode);
+
+ pct = (tab->s->line_off + tab->s->curs_y) * 100.0 / tab->s->line_max;
+
+ if (tab->s->line_max <= body_lines)
+ wprintw(modeline, "All ");
+ else if (tab->s->line_off == 0)
+ wprintw(modeline, "Top ");
+ else if (tab->s->line_off + body_lines >= tab->s->line_max)
+ wprintw(modeline, "Bottom ");
+ else
+ wprintw(modeline, "%.0f%% ", pct);
+
+ wprintw(modeline, "%d/%d %s ",
+ tab->s->line_off + tab->s->curs_y,
+ tab->s->line_max,
+ tab->urlstr);
+
getyx(modeline, y, x);
getmaxyx(modeline, max_y, max_x);