Lexique informatique › Programmation › FocusIn et FocusOut

FocusIn et FocusOut

Programmation Svenska → Mis à jour: 2026-10-11

La paire d'événements que le serveur X envoie quand le focus clavier passe d'une fenêtre à une autre — techniquement précise, et justement pour cela presque impossible à interpréter correctement.

Le focus se donne avec XSetInputFocus, en général par le gestionnaire de fenêtres, et chaque fenêtre qui a sélectionné FocusChangeMask et qui est touchée par le changement reçoit un FocusOut ou un FocusIn. Rien de plus simple, jusqu'à ce qu'on lise les champs. mode distingue les changements ordinaires de ceux causés par le début ou la fin d'une capture du clavier (NotifyGrab, NotifyUngrab, NotifyWhileGrabbed). detail a huit valeurs — NotifyAncestor, NotifyVirtual, NotifyInferior, NotifyNonlinear, NotifyNonlinearVirtual, NotifyPointer, NotifyPointerRoot et NotifyDetailNone — qui décrivent d'où le focus vient et où il va dans l'arbre des fenêtres.

La spécification consacre des pages à déterminer quelles fenêtres reçoivent quelle combinaison. La plupart des programmes lisent le type d'événement, ignorent les cas NotifyPointer et espèrent. Résultat : le grand classique des bugs X, un curseur qui clignote dans deux fenêtres à la fois, ou dans aucune.

← Retour au lexique