set the functions recursively, so if you change it after the menu has been opened it takes effect all the way down

This commit is contained in:
Dana Jansens 2007-05-20 02:17:19 +00:00
parent 3a280fa949
commit 883bad4386

View file

@ -333,6 +333,13 @@ ObMenu* menu_new(const gchar *name, const gchar *title,
self->more_menu->data = data; self->more_menu->data = data;
self->more_menu->shortcut = g_unichar_tolower(g_utf8_get_char("M")); 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; return self;
} }
@ -531,32 +538,50 @@ ObMenuEntry* menu_add_separator(ObMenu *self, gint id, const gchar *label)
void menu_set_show_func(ObMenu *self, ObMenuShowFunc func) void menu_set_show_func(ObMenu *self, ObMenuShowFunc func)
{ {
self->show_func = self->more_menu->show_func = func; do {
self->show_func = func;
self = self->more_menu;
} while (self);
} }
void menu_set_hide_func(ObMenu *self, ObMenuHideFunc func) void menu_set_hide_func(ObMenu *self, ObMenuHideFunc func)
{ {
self->hide_func = self->more_menu->hide_func = func; do {
self->hide_func = func;
self = self->more_menu;
} while (self);
} }
void menu_set_update_func(ObMenu *self, ObMenuUpdateFunc func) void menu_set_update_func(ObMenu *self, ObMenuUpdateFunc func)
{ {
self->update_func = self->more_menu->update_func = func; do {
self->update_func = func;
self = self->more_menu;
} while (self);
} }
void menu_set_execute_func(ObMenu *self, ObMenuExecuteFunc func) void menu_set_execute_func(ObMenu *self, ObMenuExecuteFunc func)
{ {
self->execute_func = self->more_menu->execute_func = func; do {
self->execute_func = func;
self = self->more_menu;
} while (self);
} }
void menu_set_destroy_func(ObMenu *self, ObMenuDestroyFunc func) void menu_set_destroy_func(ObMenu *self, ObMenuDestroyFunc func)
{ {
self->destroy_func = self->more_menu->destroy_func = func; do {
self->destroy_func = func;
self = self->more_menu;
} while (self);
} }
void menu_set_place_func(ObMenu *self, ObMenuPlaceFunc func) void menu_set_place_func(ObMenu *self, ObMenuPlaceFunc func)
{ {
self->place_func = self->more_menu->place_func = func; do {
self->place_func = func;
self = self->more_menu;
} while (self);
} }
ObMenuEntry* menu_find_entry_id(ObMenu *self, gint id) ObMenuEntry* menu_find_entry_id(ObMenu *self, gint id)