summaryrefslogtreecommitdiff
path: root/openbox/menu.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-08-30 17:46:23 +0000
committerDana Jansens <danakj@orodu.net>2003-08-30 17:46:23 +0000
commit8e76e328639ba42cdafa5306f924b0491faec969 (patch)
tree286b5d45b2adece699b87455aa9fbfadb7e86aec /openbox/menu.c
parent2c6c0757fa497f4c1e0648bcbb1927c0fa12862f (diff)
add destructor functions for clients that you acn subscribe with, and use these instead of hardcoding special cases in the unmanage code
Diffstat (limited to 'openbox/menu.c')
-rw-r--r--openbox/menu.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/openbox/menu.c b/openbox/menu.c
index 8a4c28b9..c8e16e48 100644
--- a/openbox/menu.c
+++ b/openbox/menu.c
@@ -55,6 +55,13 @@ static gboolean menu_open(gchar *file, xmlDocPtr *doc, xmlNodePtr *node)
return loaded;
}
+static void client_dest(ObClient *c)
+{
+ /* menus can be associated with a client, so close any that are since
+ we are disappearing now */
+ menu_frame_hide_all_client(c);
+}
+
void menu_startup()
{
xmlDocPtr doc;
@@ -91,10 +98,14 @@ void menu_startup()
g_assert(menu_parse_state.menus == NULL);
}
+
+ client_add_destructor(client_dest);
}
void menu_shutdown()
{
+ client_remove_destructor(client_dest);
+
parse_shutdown(menu_parse_inst);
menu_parse_inst = NULL;