XmList
Le widget liste de Motif : des lignes d'XmString avec quatre modèles de sélection, d'une ligne à la fois jusqu'au clic avec Maj et Ctrl, et toujours un double-clic qui ouvre.
La liste reçoit un tableau d'XmString dans XmNitems avec XmNitemCount, ou se remplit au fil de l'eau avec XmListAddItem et XmListAddItems. XmNvisibleItemCount fixe le nombre de lignes visibles, et XmCreateScrolledList place le widget dans un XmScrolledWindow doté d'une barre de défilement. L'effet d'un clic dépend de XmNselectionPolicy : XmSINGLE_SELECT sélectionne une ligne et la désélectionne au clic suivant, XmBROWSE_SELECT laisse la sélection suivre la souris pendant le glissement, XmMULTIPLE_SELECT bascule chaque ligne indépendamment et XmEXTENDED_SELECT offre le modèle que tout le monde a appris dans les gestionnaires de fichiers, Maj pour les plages et Ctrl pour les ajouts isolés. Chaque modèle a son callback, et XmNdefaultActionCallback répond au double-clic.
Le prix à payer était XmString. Chaque ligne devait être convertie depuis un char* avec XmStringCreateLocalized, puis libérée, et un programme qui remplissait la liste de dix mille lignes sentait le coût de la conversion et découvrait que XmListAddItems allait bien plus vite qu'un appel par ligne. XmFileSelectionBox est en substance deux listes de ce genre, ce qui explique que la plupart des utilisateurs d'Unix ont rencontré ce widget sans en connaître le nom.