Stapelvolgorde
Meer info
- Gemaakt door
- Tomáš Stýblo
- Jaar
- 2003
- Type
- Commandoregelprogramma
- Licentie
- GPL
De volgorde waarin vensters van hetzelfde niveau boven elkaar liggen, zodat de server weet welk venster waar zichtbaar is als twee elkaar overlappen — in X11 een eigenschap los van het focus, en uiteindelijk aan de window manager om te bepalen.
Elk venster in X11 heeft een lijst kindvensters, en die staan in een vaste volgorde van onder naar boven. Waar twee broers overlappen wordt het bovenste getekend; de bedekte delen van het onderste krijgen een Expose-gebeurtenis zodra ze weer vrijkomen. Het kernprotocol geeft een client een handvol middelen: XRaiseWindow en XLowerWindow, XCirculateSubwindows, dat de kinderen roteert, en ConfigureWindow met het veld stack_mode, dat Above, Below, TopIf, BottomIf of Opposite kan zijn ten opzichte van een optionele broer. XQueryTree geeft de kinderen in precies die volgorde terug, van onder naar boven, en zo weten xwininfo -tree en vergelijkbare tools wat bovenop ligt.
Voor vensters op het hoogste niveau, de kinderen van het rootvenster, gelden in de praktijk andere regels. Een window manager die SubstructureRedirect heeft geselecteerd, ontvangt de pogingen van programma's om te verhogen of te verlagen als ConfigureRequest-gebeurtenissen en doet vervolgens wat hij wil, en EWMH voegde lagen toe: het bureaubladvenster onderaan, gewone vensters in het midden, docks en vensters met _NET_WM_STATE_ABOVE daarboven en een gefocust schermvullend venster bovenaan. De eigenschap _NET_CLIENT_LIST_STACKING op de root publiceert het resultaat voor pagers en taakbalken. Windows noemt hetzelfde Z-order, met een aparte band voor “topmost”, en macOS spreekt van vensterniveaus. In alle drie is het feit dat omhoog halen en focussen twee afzonderlijke handelingen zijn een bron van bugs, en daarvoor bestaat auto-raise als pleister.