On 21.02.2013 18:36, Andrey Borzenkov wrote:

> draw_menu() acconted for upper border of selected item pixmap, but not
> for lower. So it could happen that lower border was visually cut off.
> 
> Also various calculations of menu vertical size did not account for
> space for lower border
> 
> Signed-off-by: Andrey Borzenkov <arvidj...@gmail.com>
> 
> ---
>  grub-core/gfxmenu/gui_list.c |   11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/grub-core/gfxmenu/gui_list.c b/grub-core/gfxmenu/gui_list.c
> index 1982d9a..5c83383 100644
> --- a/grub-core/gfxmenu/gui_list.c
> +++ b/grub-core/gfxmenu/gui_list.c
> @@ -97,8 +97,14 @@ get_num_shown_items (list_impl_t self)
>    grub_gfxmenu_box_t box = self->menu_box;
>    int box_top_pad = box->get_top_pad (box);
>    int box_bottom_pad = box->get_bottom_pad (box);
> +
> +  grub_gfxmenu_box_t selbox = self->selected_item_box;
> +  int sel_top_pad = selbox->get_top_pad (selbox);
> +  int sel_bottom_pad = selbox->get_bottom_pad (selbox);
> +      
>        
>    return (self->bounds.height + item_vspace - 2 * boxpad
> +       - sel_top_pad - sel_bottom_pad

I don't see the logic behind this. item_top in draw_menu doesn't
increase more on selected item than on any other one.

>         - box_top_pad - box_bottom_pad) / (item_height + item_vspace);
>  }
>  
> @@ -392,7 +398,8 @@ list_get_minimal_size (void *vself, unsigned *width, 
> unsigned *height)
>        unsigned width_s;
>  
>        grub_gfxmenu_box_t selbox = self->selected_item_box;
> -      int sel_toppad = selbox->get_top_pad (selbox);
> +      int sel_top_pad = selbox->get_top_pad (selbox);
> +      int sel_bottom_pad = selbox->get_bottom_pad (selbox);
>        
>        *width = grub_font_get_string_width (self->item_font, "Typical OS");
>        width_s = grub_font_get_string_width (self->selected_item_font,
> @@ -406,7 +413,7 @@ list_get_minimal_size (void *vself, unsigned *width, 
> unsigned *height)
>        *height = (item_height * num_items
>                   + item_vspace * (num_items - 1)
>                   + 2 * boxpad
> -                 + box_top_pad + box_bottom_pad + sel_toppad);
> +                 + box_top_pad + box_bottom_pad + sel_top_pad + 
> sel_bottom_pad);
>      }
>    else
>      {



Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to