IT用語集 › プログラミング › ジオメトリ管理 (Xt)

ジオメトリ管理 (Xt)

プログラミング Svenska → 更新: 2026-10-24

ウィジェットの大きさと位置を誰が決めるかというX Toolkitの規則。子が頼み、親が決め、頂点のシェルはさらにウィンドウマネージャに頼む。

Xtのウィジェットは好きな場所に勝手に描画しない。位置とサイズは親のもので、親は geometry_manager メソッドを持つCompositeウィジェットである。子が変更を望むなら XtMakeGeometryRequest で頼む。答えは XtGeometryYes、XtGeometryNo、XtGeometryAlmost(「それは無理だが、これではどうか」)のいずれかで、子は妥協案を受け入れても、あきらめてもよい。親は逆に XtQueryGeometry で子の希望を尋ね、XtConfigureWidget で配置する。子の XtManageChild や XtUnmanageChild は change_managed を呼び出し、レイアウトをやり直させる。MotifのXmFormのようなConstraintウィジェットは、各子にアタッチメントという独自のリソースを加え、親のリサイズに子がどう追従するかを制御する。

親の範囲内で満たせない要求は、リンクを一つずつ上へ伝わってシェルまで届き、シェルがそれを XConfigureWindow と WM_NORMAL_HINTS に変えて、ウィンドウマネージャの判断を待つ。答えは「ノー」かもしれない。古典的な落とし穴は、一度realizeされたシェルが XtNallowShellResize を設定しないと大きくならず、内容が動的に変わるダイアログが切り取られることだ。もう一つは、ウィジェット同士が互いの Almost に Almost を返し続けて永遠に終わらないことである。1988年としては野心的な仕組みで、他のツールキットよりずっと早くMotifプログラムがウィンドウサイズに追従できた理由であり、ときに追従しなかった理由でもある。

← 用語集に戻る