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. -- With best regards, _______________________________ Vladimir Testov, ROSA Laboratory. www.rosalab.ru
<<attachment: after-text-width-OK.png>>
<<attachment: before-text-width-bug.png>>
diff -Naur grub-new/grub-core/gfxmenu/gui_list.c grub-new2/grub-core/gfxmenu/gui_list.c --- grub-new/grub-core/gfxmenu/gui_list.c 2013-07-09 15:27:35.337936761 +0400 +++ grub-new2/grub-core/gfxmenu/gui_list.c 2013-07-11 18:17:38.856943765 +0400 @@ -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; }
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel