ConfigureNotify
L'événement X11 signalant qu'une fenêtre a réellement changé de position, de taille, de bordure ou de rang dans la pile — après coup, pas avant.
Un client X qui veut suivre sa propre taille sélectionne StructureNotifyMask sur sa fenêtre et reçoit un ConfigureNotify à chaque changement de géométrie, avec x, y, largeur, hauteur, épaisseur de bordure, la fenêtre sœur sous laquelle il se trouve désormais et l'indicateur override-redirect. C'est le signal pour refaire la mise en page et redessiner. Un parent qui sélectionne SubstructureNotifyMask reçoit le même événement pour tous ses enfants. Les applications ont appris tôt à les regrouper : saisir un coin de fenêtre en produit des dizaines par seconde, et un programme qui redessine à chacun ne rattrape jamais son retard.
Le piège apparaît avec le reparentage. Dès que le gestionnaire de fenêtres a posé un cadre autour du client, les coordonnées de l'événement sont relatives à ce cadre et non à l'écran, et déplacer le cadre ne déplace pas le client, du point de vue de son parent. L'ICCCM impose donc au gestionnaire d'envoyer un ConfigureNotify synthétique, reconnaissable à send_event, avec des coordonnées relatives à la racine. Les programmes qui se fient à l'événement réel et jettent le synthétique finissent par placer leurs menus contextuels à quelques pixels de l'endroit voulu — de façon parfaitement reproductible.