[2/?] grub-core/gfxmenu/gui_list.c - menu entry's width bug
PATCH 1/1 [2/?] grub-core/gfxmenu/gui_list.c - menu entry's width bug
You can see a graphical bug while using pixmap styled box of the selected menu entry.
If the line is long enough or the font size is big enough, then the text of the selected menu entry will be drawn on the styled box.
See screenshots.
Signature · 4 lines
With best regards, _______________________________ Vladimir Testov, ROSA Laboratory. www.rosalab.ru
grub-core/gfxmenu/gui_list.c +19 -7
@@ -249,6 +249,19 @@ oviewport.width -2 * boxpad, oviewport.height - 2 * boxpad); +int cwidth = oviewport.width -2 * boxpad -2 ; +if (selbox->get_border_width) + cwidth -= selbox->get_border_width (selbox); + selbox->set_content_size (selbox, cwidth, item_height); + +int string_left_offset = self->icon_width + icon_text_space; +int string_top_offset = (item_height - (ascent + descent)) /2 + ascent; + +grub_video_rect_t svpsave, sviewport; + sviewport.x = sel_leftpad + string_left_offset; + sviewport.width = cwidth - string_left_offset; + sviewport.height = item_height; +for (visible_index =0 , menu_index = self->first_shown_index; visible_index < num_shown_items && menu_index < self->view->menu->size; visible_index++, menu_index++)
@@ -258,10 +271,6 @@if (is_selected) { -int cwidth = oviewport.width -2 * boxpad -2 ; -if (selbox->get_border_width) - cwidth -= selbox->get_border_width (selbox); - selbox->set_content_size (selbox, cwidth, item_height); selbox->draw (selbox,0 , item_top - sel_toppad); }
@@ -283,12 +292,15 @@ ((is_selected && self->selected_item_color_set) ? self->selected_item_color : self->item_color); + + sviewport.y = item_top; +grub_gui_set_viewport (&sviewport, &svpsave);grub_font_draw_string (item_title, font,grub_video_map_rgba_color (text_color), - sel_leftpad + self->icon_width + icon_text_space, - (item_top + (item_height - (ascent + descent)) - /2 + ascent)); +0 , + string_top_offset); +grub_gui_restore_viewport (&svpsave); item_top += item_height + item_vspace; }