Other Alias
XtManageChildren, XtManageChild, XtUnmanageChildren, XtUnmanageChild, XtChangeManagedSet書式
typedef Widget *WidgetList;
void XtManageChildren(children, num_children)
WidgetList children;
Cardinal num_children;
void XtManageChild(child)
Widget child;
void XtUnmanageChildren(children, num_children)
WidgetList children;
Cardinal num_children;
void XtUnmanageChild(child)
Widget child;
void XtChangeManagedSet(unmanage_children, num_unmanage_children, manage_children, num_manage_children, post_unmanage_pre_manage_hook, client_data)
WidgetList unmanage_children;
Cardinal num_unmanage_children;
WidgetList manage_children;
Cardinal num_manage_children;
XtCSMProc post_unmanage_pre_manage_hook;
XtPointer client_data;
Boolean XtIsManaged(widget)
Widget widget
引き数
- child
- 子ウィジェットを指定する。
- children
- 子ウィジェットのリストを指定する。
- num_children
- 子ウィジェットの数を指定する。
- widget
- ウィジェットを指定する。
- manage_children
- マネージセットに追加する子ウィジェットのリストを指定する。
- num_manage_children
- manage_children リスト内のエントリー数を指定する。
- unmanage_children
- マネージセットから取り除く子ウィジェットのリストを指定する。
- num_unmanage_children
- unmanage_children リスト内のエントリー数を指定する。
- post_unmanage_pre_manage_hook
- マネージ解除後、マネージ前に呼び出すフック手続きを指定する。
- client_data
- フック手続きに渡すクライアントデータを指定する。
説明
関数 XtManageChildren は以下の処理を行う:- •
- 親の異なる子ウィジェットが含まれる場合や親ウィジェットが compositeWidgetClass のサブクラスでない場合に、エラーを出す。
- •
- 共通の親が破棄されようとしている場合は、即座に戻ってくる。そうでなけれ ば、リスト中のユニークな子ウィジェットのそれぞれに対して、 XtManageChildren は、その子ウィジェットが既にマネージされているか、破棄されようとしてい る場合にはこれをを無視する。また、マークが付いていなければ、これにマー クを付ける。
- •
-
親ウィジェットがリアライズされていて、かつ全ての子ウィジェットにマーク
が付けられている場合、新しくマネージされた子ウィジェットの一部は表示可
能になる。
-
- -
- そのウィジェットの親ウィジェットの change_managed 手続きを呼ぶ。
- -
- 前にマネージ解除された子ウィジェットのうち、リアライズ解除されているも のそれぞれについて XtRealizeWidget を呼ぶ。
- -
- 前にマネージ解除された子ウィジェットのうち、map_when_managed が True であるものそれぞれをマップする。
-
子ウィジェットのマネージは、子ウィジェットの順序とは独立であり、子ウィ ジェットの生成や破棄とも独立である。 親ウィジェットのレイアウトルーチンは, managed フィールドが True である子ウィジェットを考慮に入れ、それ以外の子ウィジェットを全て無視す る。 複合ウィジェットの中には(特に固定されたボックス)、insert_child 手続き の中から XtManageChild を呼ぶものがある点に注意せよ。
親ウィジェットがリアライズされていれば、マネージされている子ウィジェッ トの集合が変化したことを通知するために、親ウィジェットの change_managed 手続きが呼ばれる。 これにより、親ウィジェットは子ウィジェットの再配置やサイズ変更を行うこ とができる。 親ウィジェットは、必要に応じて XtMoveWidget を呼んで、それぞれの子ウィジェットを動かすことができる。 この関数は、まず x, y フィールドを更新し、次に、このウィジェットがリア ライズされていれば XMoveWindow を呼ぶ。
関数 XtManageChild は、長さが1の WidgetList を作り、 XtManageChildren を呼ぶ。
関数 XtUnmanageChildren 以下の動作を行う:
- 親の異なる子ウィジェットが含まれる場合や親ウィジェットが compositeWidgetClass のサブクラスでない場合に、エラーを出す。
-
共通の親が破棄されようとしている場合は、即座に戻ってくる。そうでなけれ
ば、リスト中のユニークな子ウィジェットのそれぞれに対して、
XtUnmanageChildren
が以下の処理を行う:
-
- その子ウィジェットが既にマネージ解除されているか、破棄されようとしてい る場合にはこれをを無視する。また、マークが付いていなければ、これにマー クを付ける。
- 子ウィジェットがリアライズされている場合、これはマップ解除によって不可 視の状態にされる。
- 親ウィジェットがリアライズされていれば、全ての子ウィジェットにマークを 付け終った後で、親ウィジェットの change_managed 手続きを呼ぶ。
XtUnmanageChildren は、子ウィジェットを破棄することはない。 親ウィジェットのマネージセットからウィジェットを削除することは、一時的 にウィジェットを取り除いているだけのことが多い。この場合には、後で再び 子ウィジェットをマネージすることができる。
関数 XtUnmanageChild は、長さ1のウィジェットリストを作り、 XtUnmanageChildren を呼び出す。
XtChangeManagedSet は、以下の動作を行う:
- •
- manage_children リストと unmanage_children リストで指定さ れたウィジェットに親の異なるものが含まれる場合や、親ウィジェットが compositeWidgetClass のサブクラスでない場合に、エラーを出す。
- •
- 共通の親が破棄されようとしている場合は、即座に戻ってくる。
- •
-
CompositeClassExtension
が定義されていない場合、または
CompositeClassExtension
は定義されているが allows_change_managed_set フィールドの値が
False
であり、かつ
XtChangeManagedSet
が NULL でない post_unmanage_pre_manage_hook 手続きを指定して呼
び出された場合には、
XtChangeManagedSet
は以下の動作を行う:
-
- -
- XtUnmanageChildren (unmanage_children, num_unmanage_children) を呼び出す。
- -
- 指定された post_unmanage_pre_manage_hook を呼び出す。
- -
- XtManageChildren (manage_children, num_manage_children) を呼び出し、その後すぐに戻る。
-
- •
-
そうでない場合で、allows_change_managed_set の値が
True
である
CompositeClassExtension
が定義されている場合、または
CompositeClassExtension
が定義されておらず、かつ NULL である
post_unmanage_pre_manage_hook 手続きを使って
XtChangeManagedSet
が呼び出された場合には、以下の処理が行われる:
-
- -
- unmanage_children リストの子ウィジェットそれぞれについて処理を行 う。この子ウィジェットが既にマネージ解除されているか破棄されようとして いる場合には、これは無視される。そうでない場合には、マネージ解除のマー クが付けられ、さらにリアライズされている場合は、アンマップされて不可視 にされる。
- -
- post_unmanage_pre_manage_hook 手続きが NULL でない場合、この手続 きが指定されたように呼び出される。
- -
- manage_children リストの子ウィジェットそれぞれに対して処理を行う。 子ウィジェットが既にマネージされているか、破棄されようとしている場合に は、これは無視される。そうでない場合には、マネージされるものとしてマー クが付けられる。
-
- •
-
親ウィジェットがリアライズされており、子ウィジェット全てにマークが付け
られた後ならば、まず親ウィジェットの change_managed 手続きが呼ばれ、続
いて以下の処理が行われることで、新しくマネージされた子ウィジェットの一
部が可視状態になる:
-
- -
- 以前にマネージ解除された子ウィジェットで、リアライズされていないものの それぞれに対して XtRealizeWidget を呼ぶ。
- -
- 以前にマネージ解除された子ウィジェットで、map_when_managed が True であるものをそれぞれマップする。
-
関数 XtIsManaged は、 指定されたウィジェットがクラス RectObj かそのサブクラスであり、かつマ ネージされている場合に True を返し、そうでない場合には False を返す。