Widgety Composite i Constraint (Xt)
Dwie klasy widgetów Xt, które mogą mieć potomków: Composite, która przechowuje ich listę i decyduje o geometrii, oraz Constraint, która dodatkowo dokleja do każdego potomka własne zasoby, co umożliwia kontenery układu takie jak XmForm.
Xt buduje interfejsy jako drzewa, ale tylko niektóre węzły mogą się rozgałęziać. Klasa bazowa Core to prostokąt z oknem, kolorami i obsługą zdarzeń — i nic więcej. Composite dziedziczy po niej i dodaje listę potomków oraz trzy metody, które kontener musi dostarczyć: insert_child i delete_child do utrzymywania listy oraz geometry_manager, który odpowiada, gdy potomek prosi o nowy rozmiar lub położenie. Potomkowie powstają jako niezarządzani i stają się widoczni dopiero po XtManageChild, kiedy wywoływane jest change_managed i kontener przelicza układ. Przycisk nigdy sam się nie przesuwa; prosi, a rodzic odpowiada „tak”, „nie” albo „może raczej tak”.
Constraint dziedziczy po Composite i robi jeszcze jedno: każde dziecko dostaje blok zasobów, które należą do rodzica, ale są ustawiane na dziecku. Dzięki temu XmForm może mieć XmNleftAttachment na przycisku, a Form z Athena — fromHoriz, choć klasa przycisku nic nie wie o formularzach. Blok wisi na core.constraints i jest wypełniany przez własne initialize klasy Constraint. Ten wzorzec — kontener, który posiada reguły układu, ale przechowuje je osobno dla każdego dziecka — przeszedł dalej do opcji pack w Tk i właściwości układu w Qt. Shell to czwarta klasa: Composite z dokładnie jednym dzieckiem, mająca własny artykuł.