-/* -*- indent-tabs-mode: t; tab-width: 4; c-basic-offset: 4; -*-
+/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
menu.c for the Openbox window manager
Copyright (c) 2003 Ben Jansens
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);
}
menu_frame_hide_all();
frame = menu_frame_new(self, client);
- menu_frame_move(frame, x, y);
+ menu_frame_move(frame, x - ob_rr_theme->bwidth, y - ob_rr_theme->bwidth);
menu_frame_show(frame, NULL);
if (frame->entries)
menu_frame_select_next(frame);
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);