X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fmenuframe.c;h=120f4c385c89e9a75fa2d9e4d16c10e83181c5a2;hb=41a1d2ea7bd8a69dc0eaf1deb3f3bd96a1a579e5;hp=6cfcd6173461603a45dbc729c9781149ea8cf1aa;hpb=310d268bf0b3fbc065e754b9dc25862a60efcaae;p=chaz%2Fopenbox diff --git a/openbox/menuframe.c b/openbox/menuframe.c index 6cfcd617..120f4c38 100644 --- a/openbox/menuframe.c +++ b/openbox/menuframe.c @@ -66,8 +66,9 @@ ObMenuFrame* menu_frame_new(ObMenu *menu, ObClient *client) self->client = client; attr.event_mask = FRAME_EVENTMASK; + attr.save_under = True; self->window = createWindow(RootWindow(ob_display, ob_screen), - CWEventMask, &attr); + CWEventMask | CWSaveUnder, &attr); attr.event_mask = TITLE_EVENTMASK; self->title = createWindow(self->window, CWEventMask, &attr); self->items = createWindow(self->window, 0, NULL); @@ -627,6 +628,16 @@ gboolean menu_frame_show(ObMenuFrame *self, ObMenuFrame *parent) menu_frame_update(self); menu_frame_visible = g_list_prepend(menu_frame_visible, self); + + if (config_menu_middle) { + if (self->parent) + menu_frame_move(self, self->area.x, self->area.y + - self->area.height/2 + + self->item_h/2); + else if (self->show_title) + menu_frame_move(self, self->area.x - self->area.width/2, + self->area.y - self->title_h*3/4); + } menu_frame_move_on_screen(self); @@ -779,10 +790,14 @@ void menu_entry_frame_show_submenu(ObMenuEntryFrame *self) f = menu_frame_new(self->entry->data.submenu.submenu, self->frame->client); menu_frame_move(f, - self->frame->area.x + self->frame->area.width - - ob_rr_theme->menu_overlap - ob_rr_theme->bwidth, - self->frame->area.y + self->frame->title_h + - self->area.y + ob_rr_theme->menu_overlap); + self->frame->area.x + + self->frame->area.width + - ob_rr_theme->menu_overlap + - ob_rr_theme->bwidth, + self->frame->area.y + + self->frame->title_h + + self->area.y + + (config_menu_middle ? 1 : ob_rr_theme->menu_overlap)); menu_frame_show(f, self->frame); }