Lexique informatique › Programmation › XmForm

XmForm

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

Le widget de mise en page de Motif, où chaque enfant est ancré à des bords, à des voisins ou à des positions en pourcentage plutôt que doté de coordonnées : ce que Motif a eu de plus proche d'un moteur de mise en page, et l'origine de l'avertissement sur les 10 000 itérations.

XmForm est un widget gestionnaire, sous-classe de XmBulletinBoard, qui place ses enfants par contraintes. Chaque enfant reçoit quatre ressources, XmNtopAttachment, XmNbottomAttachment, XmNleftAttachment et XmNrightAttachment, chacune pouvant valoir XmATTACH_FORM (le bord du formulaire lui-même), XmATTACH_WIDGET (à côté d'un frère), XmATTACH_OPPOSITE_WIDGET, XmATTACH_POSITION (une fraction de XmNfractionBase, 100 par défaut) ou XmATTACH_NONE, plus un décalage en pixels. Quand la fenêtre est redimensionnée, le formulaire recalcule tout : une rangée de boutons qui doit coller au bord inférieur ou un champ de texte qui doit occuper toute la largeur s'écrit donc en attachements, et non en code dans un callback de redimensionnement.

Le modèle était aussi puissant que fameux. Les contraintes sont résolues par itération, et des attachements contradictoires produisaient l'avertissement Bailed out of edge synchronization after 10,000 iterations, une ligne que des générations de programmeurs Motif ont appris à reconnaître. Un enfant sans aucun attachement se retrouve là où pointent XmNx et XmNy, comme dans un simple bulletin board. La même idée d'ancrer les éléments les uns aux autres a refait surface vingt ans plus tard dans l'Auto Layout d'iOS et le ConstraintLayout d'Android, sans que ni l'un ni l'autre ne reconnaisse la filiation.

← Retour au lexique