X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fmenuframe.c;h=91e7c53ef58397bcd5a2720146842fcafe41e7e9;hb=4eb9a0c59efb6bfd598e35fe692e6b4b994e499c;hp=d7f09aad0d92b0eaa0006dff5a659912ff992030;hpb=aeac3b735bf4caf7c014c58c1271b2cbe5aedd80;p=chaz%2Fopenbox diff --git a/openbox/menuframe.c b/openbox/menuframe.c index d7f09aad..91e7c53e 100644 --- a/openbox/menuframe.c +++ b/openbox/menuframe.c @@ -108,7 +108,7 @@ ObMenuFrame* menu_frame_new(ObMenu *menu, guint show_from, ObClient *client) ObMenuFrame *self; XSetWindowAttributes attr; - self = g_new0(ObMenuFrame, 1); + self = g_slice_new0(ObMenuFrame); self->obwin.type = OB_WINDOW_CLASS_MENUFRAME; self->menu = menu; self->selected = NULL; @@ -151,7 +151,7 @@ void menu_frame_free(ObMenuFrame *self) XDestroyWindow(obt_display, self->window); - g_free(self); + g_slice_free(ObMenuFrame, self); } } @@ -168,7 +168,7 @@ static ObMenuEntryFrame* menu_entry_frame_new(ObMenuEntry *entry, ObMenuEntryFrame *self; XSetWindowAttributes attr; - self = g_new0(ObMenuEntryFrame, 1); + self = g_slice_new0(ObMenuEntryFrame); self->entry = entry; self->frame = frame; @@ -216,7 +216,7 @@ static void menu_entry_frame_free(ObMenuEntryFrame *self) g_hash_table_remove(menu_frame_map, &self->bullet); } - g_free(self); + g_slice_free(ObMenuEntryFrame, self); } } @@ -321,7 +321,7 @@ static void menu_frame_place_submenu(ObMenuFrame *self, gint *x, gint *y) void menu_frame_move_on_screen(ObMenuFrame *self, gint x, gint y, gint *dx, gint *dy) { - Rect const *a = NULL; + const Rect *a = NULL; gint pos, half; *dx = *dy = 0; @@ -831,7 +831,7 @@ void menu_frame_render(ObMenuFrame *self) static void menu_frame_update(ObMenuFrame *self) { GList *mit, *fit; - Rect const *a; + const Rect *a; gint h; menu_pipe_execute(self->menu); @@ -1061,14 +1061,15 @@ gboolean menu_frame_show_submenu(ObMenuFrame *self, ObMenuFrame *parent, static void menu_frame_hide(ObMenuFrame *self) { + ObMenu *const menu = self->menu; GList *it = g_list_find(menu_frame_visible, self); gulong ignore_start; if (!it) return; - if (self->menu->hide_func) - self->menu->hide_func(self, self->menu->data); + if (menu->hide_func) + menu->hide_func(self, menu->data); if (self->child) menu_frame_hide(self->child); @@ -1095,6 +1096,9 @@ static void menu_frame_hide(ObMenuFrame *self) event_end_ignore_all_enters(ignore_start); menu_frame_free(self); + + if (menu->cleanup_func) + menu->cleanup_func(menu, menu->data); } void menu_frame_hide_all(void)