void selector_init(struct selector_t *sel, struct library_t *lib) { sel->library = lib; scroll_reset(&sel->records); scroll_reset(&sel->crates); scroll_set_entries(&sel->crates, lib->crates); sel->toggled = false; sel->search[0] = '\0'; sel->search_len = 0; listing_init(&sel->listing_a); listing_init(&sel->listing_b); sel->view_listing = &sel->listing_a; sel->swap_listing = &sel->listing_b; (void)listing_copy(initial(sel), sel->view_listing); scroll_set_entries(&sel->records, sel->view_listing->entries); }
static void scroll_init(app_t *app, const struct timeval *p_now, int dir) { if (app->scroll.dir != dir) scroll_reset(app, p_now, dir); else { struct timeval dif; /* was already 'dir', check if to consider "continuous" press */ timersub(p_now, &app->scroll.last, &dif); if (dif.tv_sec > 0 || dif.tv_usec > CONTINUOUS_KEYPRESS_INTERVAL) scroll_reset(app, p_now, dir); else { long ms; /* still pressing 'dir', accelerate */ ms = (app->scroll.delay_ms * app->scroll.accel_ms) / 1000; if (ms >= 0) app->scroll.delay_ms = ms; } } }