static void parse_menu(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
gpointer data);
-static void client_dest(gpointer client)
+static void client_dest(ObClient *client, gpointer data)
{
/* menus can be associated with a client, so close any that are since
we are disappearing now */
g_assert(menu_parse_state.parent == NULL);
if (!reconfig)
- client_add_destructor(client_dest);
+ client_add_destructor(client_dest, NULL);
}
void menu_shutdown(gboolean reconfig)
GSList *acts = NULL;
for (node = node->children; node; node = node->next)
- if (!xmlStrcasecmp(node->name, (const xmlChar*) "action"))
- acts = g_slist_append(acts, action_parse
- (i, doc, node,
- OB_USER_ACTION_MENU_SELECTION));
+ if (!xmlStrcasecmp(node->name, (const xmlChar*) "action")) {
+ ObAction *a = action_parse
+ (i, doc, node, OB_USER_ACTION_MENU_SELECTION);
+ if (a)
+ acts = g_slist_append(acts, a);
+ }
menu_add_normal(state->parent, -1, label, acts);
g_free(label);
}
case OB_MENU_ENTRY_TYPE_NORMAL:
g_free(self->data.normal.label);
while (self->data.normal.actions) {
- action_free(self->data.normal.actions->data);
+ action_unref(self->data.normal.actions->data);
self->data.normal.actions =
g_slist_delete_link(self->data.normal.actions,
self->data.normal.actions);