unsigned int ui_browser__rb_tree_refresh(struct ui_browser *self) { struct rb_node *nd; int row = 0; if (self->top == NULL) self->top = rb_first(self->entries); nd = self->top; while (nd != NULL) { ui_browser__gotorc(self, row, 0); self->write(self, nd, row); if (++row == self->height) break; nd = rb_next(nd); } return row; }
unsigned int ui_browser__rb_tree_refresh(struct ui_browser *browser) { struct rb_node *nd; int row = 0; if (browser->top == NULL) browser->top = rb_first(browser->entries); nd = browser->top; while (nd != NULL) { ui_browser__gotorc(browser, row, 0); browser->write(browser, nd, row); if (++row == browser->rows) break; nd = rb_next(nd); } return row; }
static void ui_browser__scrollbar_set(struct ui_browser *browser) { int height = browser->height, h = 0, pct = 0, col = browser->width, row = 0; if (browser->nr_entries > 1) { pct = ((browser->index * (browser->height - 1)) / (browser->nr_entries - 1)); } SLsmg_set_char_set(1); while (h < height) { ui_browser__gotorc(browser, row++, col); SLsmg_write_char(h == pct ? SLSMG_DIAMOND_CHAR : SLSMG_CKBRD_CHAR); ++h; } SLsmg_set_char_set(0); }
unsigned int ui_browser__list_head_refresh(struct ui_browser *browser) { struct list_head *pos; struct list_head *head = browser->entries; int row = 0; if (browser->top == NULL || browser->top == browser->entries) browser->top = ui_browser__list_head_filter_entries(browser, head->next); pos = browser->top; list_for_each_from(pos, head) { if (!browser->filter || !browser->filter(browser, pos)) { ui_browser__gotorc(browser, row, 0); browser->write(browser, pos, row); if (++row == browser->rows) break; } } return row; }