Index: apps/gui/list.c =================================================================== --- apps/gui/list.c (revision 17979) +++ apps/gui/list.c (working copy) @@ -139,7 +139,7 @@ gui_list->selected_item = 0; FOR_NB_SCREENS(i) { - gui_list->start_item[i] = 0; + gui_list->start_item[i] = -1; gui_list->last_displayed_start_item[i] = -1 ; #ifdef HAVE_LCD_BITMAP gui_list->offset_position[i] = 0; @@ -249,6 +249,8 @@ enum screen_type screen) { int nb_lines; + if(gui_list->start_item[screen] == -1) /* init ? */ + gui_list->start_item[screen] = gui_list->selected_item; int difference = gui_list->selected_item - gui_list->start_item[screen]; struct viewport vp = *gui_list->parent[screen]; #ifdef HAVE_LCD_BITMAP @@ -260,7 +262,7 @@ /* edge case,, selected last item */ if (gui_list->selected_item == gui_list->nb_items -1) { - gui_list->start_item[screen] = MAX(0, gui_list->nb_items - nb_lines); + gui_list->start_item[screen] = MAX(0, gui_list->nb_items - nb_lines + 1); } /* selected first item */ else if (gui_list->selected_item == 0)