XtManageChildren(3Xt)

名前
XtManageChildren, XtManageChild, XtUnmanageChildren, XtUnmanageChild, XtChangeManagedSet, XtIsManaged - 子ウィジェットのマネージとマネージ解除

書式
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
    フック手続きに渡すクライアントデータを指定。

説明
関数 は以下の処理を行う:

•   親の異なる子ウィジェットが含まれる場合や親ウィジェットが のサブクラスでない場合に、エラーを出す。

•   共通の親が破棄されようとしている場合は、即座に戻ってくる。そうでなけれ ば、リスト中のユニークな子ウィジェットのそれぞれに対して、 は、その子ウィジェットが既にマネージされているか、破棄されようとしてい る場合にはこれをを無視する。また、マークが付いていなければ、これにマー クを付ける。

•   親ウィジェットがリアライズされていて、かつ全ての子ウィジェットにマーク が付けられている場合、新しくマネージされた子ウィジェットの一部は表示可 能になる。

    -   そのウィジェットの親ウィジェットの change_managed 手続きを呼ぶ。

    -   前にマネージ解除された子ウィジェットのうち、リアライズ解除されているも のそれぞれについて を呼ぶ。

    -   前にマネージ解除された子ウィジェットのうち、map_when_managed が であるものそれぞれをマップする。

子ウィジェットのマネージは、子ウィジェットの順序とは独立であり、子ウィ ジェットの生成や破棄とも独立である。 親ウィジェットのレイアウトルーチンは, managed フィールドが である子ウィジェットを考慮に入れ、それ以外の子ウィジェットを全て無視す る。 複合ウィジェットの中には(特に固定されたボックス)、insert_child 手続き の中から を呼ぶものがある点に注意せよ。

親ウィジェットがリアライズされていれば、マネージされている子ウィジェッ トの集合が変化したことを通知するために、親ウィジェットの change_managed 手続きが呼ばれる。 これにより、親ウィジェットは子ウィジェットの再配置やサイズ変更を行うこ とができる。 親ウィジェットは、必要に応じて を呼んで、それぞれの子ウィジェットを動かすことができる。 この関数は、まず x, y フィールドを更新し、次に、このウィジェットがリア ライズされていれば を呼ぶ。

関数 は、長さが1の を作り、 を呼ぶ。

関数 以下の動作を行う:

•   親の異なる子ウィジェットが含まれる場合や親ウィジェットが のサブクラスでない場合に、エラーを出す。

•   共通の親が破棄されようとしている場合は、即座に戻ってくる。そうでなけれ ば、リスト中のユニークな子ウィジェットのそれぞれに対して、 が以下の処理を行う:

    -   その子ウィジェットが既にマネージ解除されているか、破棄されようとしてい る場合にはこれをを無視する。また、マークが付いていなければ、これにマー クを付ける。

    -   子ウィジェットがリアライズされている場合、これはマップ解除によって不可 視の状態にされる。

•   親ウィジェットがリアライズされていれば、全ての子ウィジェットにマークを 付け終った後で、親ウィジェットの change_managed 手続きを呼ぶ。

は、子ウィジェットを破棄することはない。 親ウィジェットのマネージセットからウィジェットを削除することは、一時的 にウィジェットを取り除いているだけのことが多い。この場合には、後で再び 子ウィジェットをマネージすることができる。

関数 は、長さ1のウィジェットリストを作り、 を呼び出す。

は、以下の動作を行う:

•   manage_children リストと unmanage_children リストで指定さ れたウィジェットに親の異なるものが含まれる場合や、親ウィジェットが のサブクラスでない場合に、エラーを出す。

•   共通の親が破棄されようとしている場合は、即座に戻ってくる。

•   が定義されていない場合、または は定義されているが allows_change_managed_set フィールドの値が であり、かつ が NULL でない post_unmanage_pre_manage_hook 手続きを指定して呼 び出された場合には、 は以下の動作を行う:

    -   (unmanage_children, num_unmanage_children) を呼び出す。

    -   指定された post_unmanage_pre_manage_hook を呼び出す。

    -   (manage_children, num_manage_children) を呼び出し、その後すぐに戻る。

•   そうでない場合で、allows_change_managed_set の値が である が定義されている場合、または が定義されておらず、かつ NULL である post_unmanage_pre_manage_hook 手続きを使って が呼び出された場合には、以下の処理が行われる:

    -   unmanage_children リストの子ウィジェットそれぞれについて処理を行 う。この子ウィジェットが既にマネージ解除されているか破棄されようとして いる場合には、これは無視される。そうでない場合には、マネージ解除のマー クが付けられ、さらにリアライズされている場合は、アンマップされて不可視 にされる。

    -   post_unmanage_pre_manage_hook 手続きが NULL でない場合、この手続 きが指定されたように呼び出される。

    -   manage_children リストの子ウィジェットそれぞれに対して処理を行う。 子ウィジェットが既にマネージされているか、破棄されようとしている場合に は、これは無視される。そうでない場合には、マネージされるものとしてマー クが付けられる。

•   親ウィジェットがリアライズされており、子ウィジェット全てにマークが付け られた後ならば、まず親ウィジェットの change_managed 手続きが呼ばれ、続 いて以下の処理が行われることで、新しくマネージされた子ウィジェットの一 部が可視状態になる:

    -   以前にマネージ解除された子ウィジェットで、リアライズされていないものの それぞれに対して を呼ぶ。

    -   以前にマネージ解除された子ウィジェットで、map_when_managed が であるものをそれぞれマップする。

関数 は、 指定されたウィジェットがクラス RectObj かそのサブクラスであり、かつマ ネージされている場合に を返し、そうでない場合には を返す。

関連項目
XtMapWidget(3Xt), XtRealizeWidget(3Xt)
X Toolkit Intrinsics - C Language Interface
Xlib - C Language X Interface