X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fmenu.c;h=1585a56d2ee3287e0df02abe3a0d121938f67cac;hb=6212a5ff9c6c4d6d62e75ebfe85978fabf3f9878;hp=2bd382cbab5227e3426ce803f44760a1225ee338;hpb=adb9bb700f3235728dacc1d3e3daad81abd93e9a;p=chaz%2Fopenbox diff --git a/openbox/menu.c b/openbox/menu.c index 2bd382cb..1585a56d 100644 --- a/openbox/menu.c +++ b/openbox/menu.c @@ -51,7 +51,7 @@ static void parse_menu_separator(ObParseInst *i, 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 */ @@ -98,7 +98,7 @@ void menu_startup(gboolean reconfig) 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) @@ -290,7 +290,13 @@ void menu_show(gchar *name, gint x, gint y, ObClient *client) 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);