list: After drawing scrollbars, explcitly switch back to old viewport.

The viewport used for the scrollbar is allocated on the stack, and falls
out of scope before the next call to set_viewport(), which sets a flag
in the now-out-of-scope "last" viewport.

Change-Id: I2c8bfcff500d189fa3857411aadc2e16aa545d2c
This commit is contained in:
Solomon Peachy 2021-04-07 06:59:23 -04:00
parent 28c89386af
commit 8b56476a2c

View file

@ -203,11 +203,12 @@ void list_draw(struct screen *display, struct gui_synclist *list)
vp.x += list_text_vp->width;
else /* left */
list_text_vp->x += SCROLLBAR_WIDTH;
display->set_viewport(&vp);
struct viewport *last = display->set_viewport(&vp);
gui_scrollbar_draw(display,
(scrollbar_in_left? 0: 1), 0, SCROLLBAR_WIDTH-1, vp.height,
list->nb_items, list_start_item, list_start_item + nb_lines,
VERTICAL);
display->set_viewport(last);
}
/* shift everything a bit in relation to the title */
else if (!VP_IS_RTL(list_text_vp) && scrollbar_in_left)