oops hehe. a render call in the loop for debugging was what made it slow. anyhow make it even faster by only calling render once too. yay snappiness.

This commit is contained in:
Dana Jansens 2007-05-07 22:15:40 +00:00
parent 3905872982
commit d915480371

View file

@ -824,13 +824,18 @@ static void menu_frame_update(ObMenuFrame *self)
fit = n; fit = n;
} }
menu_frame_render(self); /* * make the menu fit on the screen */
/* make the menu fit on the screen. at most we call render twice, at least /* calculate the height of the menu */
not like n times or sometime */ h = 0;
for (fit = self->entries; fit; fit = g_list_next(fit))
h += menu_entry_frame_get_height(fit->data,
fit == self->entries,
g_list_next(fit) == NULL);
/* add the border at the top and bottom */
h += ob_rr_theme->mbwidth * 2;
a = screen_physical_area_monitor(self->monitor); a = screen_physical_area_monitor(self->monitor);
h = self->area.height;
if (h > a->height) { if (h > a->height) {
GList *flast, *tmp; GList *flast, *tmp;
@ -854,8 +859,6 @@ static void menu_frame_update(ObMenuFrame *self)
menu_entry_frame_free(tmp->data); menu_entry_frame_free(tmp->data);
self->entries = g_list_delete_link(self->entries, tmp); self->entries = g_list_delete_link(self->entries, tmp);
menu_frame_render(self);
/* only the first one that we see is the last entry in the menu */ /* only the first one that we see is the last entry in the menu */
last_entry = FALSE; last_entry = FALSE;
}; };
@ -881,10 +884,9 @@ static void menu_frame_update(ObMenuFrame *self)
/* add our More... entry to the frame */ /* add our More... entry to the frame */
self->entries = g_list_append(self->entries, more_frame); self->entries = g_list_append(self->entries, more_frame);
} }
/* render again */
menu_frame_render(self);
} }
menu_frame_render(self);
} }
static gboolean menu_frame_is_visible(ObMenuFrame *self) static gboolean menu_frame_is_visible(ObMenuFrame *self)