Léxico de TI › Programação › XmForm

XmForm

Programação Svenska → Atualizado: 2026-10-09

O widget de layout do Motif, em que cada filho é ancorado a bordas, vizinhos ou posições percentuais em vez de receber coordenadas: o mais perto que o Motif chegou de um motor de layout, e a origem do aviso sobre 10.000 iterações.

XmForm é um widget gerenciador, subclasse de XmBulletinBoard, que posiciona os filhos por restrições. Cada filho recebe quatro recursos, XmNtopAttachment, XmNbottomAttachment, XmNleftAttachment e XmNrightAttachment, e cada um pode ser XmATTACH_FORM (a própria borda do formulário), XmATTACH_WIDGET (ao lado de um irmão), XmATTACH_OPPOSITE_WIDGET, XmATTACH_POSITION (uma fração de XmNfractionBase, 100 por padrão) ou XmATTACH_NONE, além de um deslocamento em pixels. Quando a janela é redimensionada, o formulário recalcula tudo; assim, uma fileira de botões que deve colar na borda inferior ou um campo de texto que deve ocupar toda a largura se escreve como attachments, não como código num callback de redimensionamento.

O modelo era poderoso e notório na mesma medida. As restrições são resolvidas de forma iterativa, e attachments contraditórios produziam o aviso Bailed out of edge synchronization after 10,000 iterations, uma linha que gerações de programadores Motif aprenderam a reconhecer de longe. Um filho sem nenhum attachment fica onde XmNx e XmNy mandarem, como num bulletin board simples. A mesma ideia de ancorar elementos uns aos outros reapareceu no Auto Layout do iOS e no ConstraintLayout do Android vinte anos depois, sem que nenhum dos dois reconhecesse a ancestralidade.

← Voltar ao léxico