char *theme_dir;
int need_to_recreate_pixmaps;
+ int pixmapbar_available;
char *bar_pattern;
char *highlight_pattern;
grub_gfxmenu_box_t bar_box;
static int
check_pixmaps (grub_gui_progress_bar_t self)
{
+ if (!self->pixmapbar_available)
+ return 0;
if (self->need_to_recreate_pixmaps)
{
grub_gui_recreate_box (&self->bar_box,
int bar_v_pad = bar_t_pad + bar_b_pad;
int tracklen = w - bar_h_pad;
int trackheight = h - bar_v_pad;
+
bar->set_content_size (bar, tracklen, trackheight);
int barwidth = (tracklen
progress_bar_paint (void *vself, const grub_video_rect_t *region)
{
grub_gui_progress_bar_t self = vself;
+ grub_video_rect_t vpsave;
+
if (! self->visible)
return;
if (!grub_video_have_common_points (region, &self->bounds))
return;
- grub_video_rect_t vpsave;
+ if (self->end == self->start)
+ return;
+
grub_gui_set_viewport (&self->bounds, &vpsave);
if (check_pixmaps (self))
else if (grub_strcmp (name, "bar_style") == 0)
{
self->need_to_recreate_pixmaps = 1;
+ self->pixmapbar_available = 1;
grub_free (self->bar_pattern);
self->bar_pattern = value ? grub_strdup (value) : 0;
}
else if (grub_strcmp (name, "highlight_style") == 0)
{
self->need_to_recreate_pixmaps = 1;
+ self->pixmapbar_available = 1;
grub_free (self->highlight_pattern);
self->highlight_pattern = value ? grub_strdup (value) : 0;
}