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)
menu_frame_hide_all();
frame = menu_frame_new(self, client);
- menu_frame_move(frame, x, y);
+ if (client && x < 0 && y < 0)
+ menu_frame_move(frame,
+ client->frame->area.x + client->frame->size.left,
+ client->frame->area.y + client->frame->size.top);
+ else
+ 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);