X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fmenu.c;h=66d2ac7cd9fd4b1a878278e12a64440130c6d25a;hb=883bad43869c6fe55b4409a25d4283a941f8778d;hp=0e203739bda36ca15c2e9c0eae7c9075ad67f6b4;hpb=1fa08abd9c6674c14bf4088112e69a172ddf19b6;p=chaz%2Fopenbox diff --git a/openbox/menu.c b/openbox/menu.c index 0e203739..66d2ac7c 100644 --- a/openbox/menu.c +++ b/openbox/menu.c @@ -110,13 +110,13 @@ void menu_startup(gboolean reconfig) g_assert(menu_parse_state.parent == NULL); if (!reconfig) - client_add_destructor(client_dest, NULL); + client_add_destroy_notify(client_dest, NULL); } void menu_shutdown(gboolean reconfig) { if (!reconfig) - client_remove_destructor(client_dest); + client_remove_destroy_notify(client_dest); parse_shutdown(menu_parse_inst); menu_parse_inst = NULL; @@ -333,6 +333,13 @@ ObMenu* menu_new(const gchar *name, const gchar *title, self->more_menu->data = data; self->more_menu->shortcut = g_unichar_tolower(g_utf8_get_char("M")); + self->more_menu->show_func = self->show_func; + self->more_menu->hide_func = self->hide_func; + self->more_menu->update_func = self->update_func; + self->more_menu->execute_func = self->execute_func; + self->more_menu->destroy_func = self->destroy_func; + self->more_menu->place_func = self->place_func; + return self; } @@ -357,6 +364,7 @@ static void menu_destroy_hash_value(ObMenu *self) g_free(self->name); g_free(self->title); g_free(self->execute); + g_free(self->more_menu); g_free(self); } @@ -530,32 +538,50 @@ ObMenuEntry* menu_add_separator(ObMenu *self, gint id, const gchar *label) void menu_set_show_func(ObMenu *self, ObMenuShowFunc func) { - self->show_func = func; + do { + self->show_func = func; + self = self->more_menu; + } while (self); } void menu_set_hide_func(ObMenu *self, ObMenuHideFunc func) { - self->hide_func = func; + do { + self->hide_func = func; + self = self->more_menu; + } while (self); } void menu_set_update_func(ObMenu *self, ObMenuUpdateFunc func) { - self->update_func = func; + do { + self->update_func = func; + self = self->more_menu; + } while (self); } void menu_set_execute_func(ObMenu *self, ObMenuExecuteFunc func) { - self->execute_func = func; + do { + self->execute_func = func; + self = self->more_menu; + } while (self); } void menu_set_destroy_func(ObMenu *self, ObMenuDestroyFunc func) { - self->destroy_func = func; + do { + self->destroy_func = func; + self = self->more_menu; + } while (self); } void menu_set_place_func(ObMenu *self, ObMenuPlaceFunc func) { - self->place_func = func; + do { + self->place_func = func; + self = self->more_menu; + } while (self); } ObMenuEntry* menu_find_entry_id(ObMenu *self, gint id)