/** Prepare a root menu to be shown. */ void PatchRootMenu(Menu *menu) { MenuItem *item; for(item = menu->items; item; item = item->next) { if(item->submenu) { PatchRootMenu(item->submenu); } if(item->action.type == MA_DESKTOP) { item->submenu = CreateDesktopMenu(1 << currentDesktop); InitializeMenu(item->submenu); } } }
/** Create a send to submenu. */ void CreateWindowSendToMenu(Menu *menu, ClientNode *np) { unsigned int mask; unsigned int x; mask = 0; for(x = 0; x < settings.desktopCount; x++) { if(np->state.desktop == x || (np->state.status & STAT_STICKY)) { mask |= 1 << x; } } AddWindowMenuItem(menu, _("Send To"), MA_NONE, np, 0); /* Now the first item in the menu is for the desktop list. */ menu->items->submenu = CreateDesktopMenu(mask, np); }