summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-20 02:17:19 +0000
committerDana Jansens <danakj@orodu.net>2007-05-20 02:17:19 +0000
commit883bad43869c6fe55b4409a25d4283a941f8778d (patch)
treeac85af1d3dc1e4a39615eead258e9e7c152daf9b
parent3a280fa9495f1651148f627fb621bebbc438e647 (diff)
set the functions recursively, so if you change it after the menu has been opened it takes effect all the way down
-rw-r--r--openbox/menu.c37
1 files changed, 31 insertions, 6 deletions
diff --git a/openbox/menu.c b/openbox/menu.c
index 80a1e12b..66d2ac7c 100644
--- a/openbox/menu.c
+++ b/openbox/menu.c
@@ -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;
}
@@ -531,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 = 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)
{
- 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)
{
- 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)
{
- 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)
{
- 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)
{
- 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)