* grub-core/gfxmenu/gui_list.c: Refresh first_shown_entry value when

cached view is reused.
	* grub-core/gfxmenu/view.c: Call the refresh procedure for all
	open boot menus.
This commit is contained in:
Vladimir Testov 2013-04-29 13:40:11 +02:00 committed by Vladimir 'phcoder' Serbinenko
parent c53b4e67e4
commit dc5a311a1e
4 changed files with 43 additions and 1 deletions

View file

@ -236,6 +236,27 @@ update_menu_components (grub_gfxmenu_view_t view)
update_menu_visit, view);
}
static void
refresh_menu_visit (grub_gui_component_t component,
void *userdata)
{
grub_gfxmenu_view_t view;
view = userdata;
if (component->ops->is_instance (component, "list"))
{
grub_gui_list_t list = (grub_gui_list_t) component;
list->ops->refresh_list (list, view);
}
}
/* Refresh list information (useful for submenus) */
static void
refresh_menu_components (grub_gfxmenu_view_t view)
{
grub_gui_iterate_recursively ((grub_gui_component_t) view->canvas,
refresh_menu_visit, view);
}
static void
draw_message (grub_gfxmenu_view_t view)
{
@ -294,6 +315,7 @@ grub_gfxmenu_view_draw (grub_gfxmenu_view_t view)
view->screen.x, view->screen.y,
view->screen.width, view->screen.height);
refresh_menu_components (view);
update_menu_components (view);
grub_gfxmenu_view_redraw (view, &view->screen);