diff --git a/src/menu.c b/src/menu.c index 83eb8044..cc4d7379 100644 --- a/src/menu.c +++ b/src/menu.c @@ -182,6 +182,7 @@ WMenu *wMenuCreate(WScreen *screen, const char *title, int main_menu) menu->frame->child = menu; menu->flags.lowered = 0; + menu->flags.shaded = 0; /* create borders */ if (title) { @@ -1114,6 +1115,12 @@ void wMenuUnmap(WMenu * menu) menu->flags.mapped = 0; menu->flags.open_to_left = 0; + if (menu->flags.shaded) { + wFrameWindowResize(menu->frame, menu->frame->core->width, menu->frame->top_width + + menu->entry_height*menu->entry_no + menu->frame->bottom_width - 1); + menu->flags.shaded = 0; + } + for (i = 0; i < menu->cascade_no; i++) { if (menu->cascades[i] != NULL && menu->cascades[i]->flags.mapped && !menu->cascades[i]->flags.buttoned) { @@ -2103,6 +2110,15 @@ static void menuTitleDoubleClick(WCoreWindow * sender, void *data, XEvent * even lower = 1; } changeMenuLevels(menu, lower); + } else { + if (menu->flags.shaded) { + wFrameWindowResize(menu->frame, menu->frame->core->width, menu->frame->top_width + + menu->entry_height*menu->entry_no + menu->frame->bottom_width - 1); + menu->flags.shaded = 0; + } else { + wFrameWindowResize(menu->frame, menu->frame->core->width, menu->frame->top_width - 1); + menu->flags.shaded = 1; + } } } diff --git a/src/menu.h b/src/menu.h index e568a7ea..547f0512 100644 --- a/src/menu.h +++ b/src/menu.h @@ -99,6 +99,7 @@ typedef struct WMenu { unsigned int jump_back_pending:1; unsigned int inside_handler:1; + unsigned int shaded:1; } flags; } WMenu;