/** Raise tray windows. */ void RaiseTrays(void) { TrayType *tp; for(tp = trays; tp; tp = tp->next) { tp->autoHide |= THIDE_RAISED; ShowTray(tp); JXRaiseWindow(display, tp->window); } }
/** Move to the next window in the window stack. */ void WalkWindowStack(char forward) { ClientNode *np; if(windowStack != NULL) { int x; if(wasMinimized) { np = FindClientByWindow(windowStack[windowStackCurrent]); if(np) { MinimizeClient(np, 1); } } /* Loop until we either raise a window or go through them all. */ for(x = 0; x < windowStackSize; x++) { /* Move to the next/previous window (wrap if needed). */ if(forward) { windowStackCurrent = (windowStackCurrent + 1) % windowStackSize; } else { if(windowStackCurrent == 0) { windowStackCurrent = windowStackSize; } windowStackCurrent -= 1; } /* Look up the window. */ np = FindClientByWindow(windowStack[windowStackCurrent]); /* Skip this window if it no longer exists or is currently in * a state that doesn't allow focus. */ if(np == NULL || !ShouldFocus(np, 1)) { continue; } /* Show the window. * Only when the walk completes do we update the stacking order. */ RestackClients(); if(np->state.status & STAT_MINIMIZED) { RestoreClient(np, 1); wasMinimized = 1; } else { wasMinimized = 0; } JXRaiseWindow(display, np->parent ? np->parent : np->window); FocusClient(np); break; } } }