WERROR multilist_set_window(struct multilist *list, WINDOW *window) { int maxy, maxx; bool rerender = false; getmaxyx(window, maxy, maxx); /* rerender pad if window width is different. */ if (list->data && maxx != list->window_width) { rerender = true; } list->window = window; list->window_width = maxx; list->window_height = maxy; list->start_row = 0; if (rerender) { const void *row = multilist_get_current_row(list); WERROR rv = multilist_set_data(list, list->data); if (W_ERROR_IS_OK(rv) && row) { multilist_set_current_row(list, row); } return rv; } else { put_header(list); fix_start_row(list); } return WERR_OK; }
struct value_item *value_list_get_current_item(struct value_list *vl) { return discard_const_p(struct value_item, multilist_get_current_row(vl->list)); }