XtPopdown(3) ポップアップをアンマップする

Other Alias

XtCallbackPopdown

書式

void XtPopdown(popup_shell)

      Widget popup_shell;

void XtCallbackPopdown(w, client_data, call_data)

      Widget w;

      XtPointer client_data;

      XtPointer call_data;

void MenuPopdown(shell_name)

      String shell_name;

引き数

call_data
コールバックデータを指定する。 これは、この手続きでは使用されない。
client_data
XtPopdownID 構造体へのポインタを指定する。
popup_shell
ポップダウンするウィジェットシェルを指定する。
shell_name
ポップダウンするウィジェットシェルの名前を指定する。
w
ウィジェットを指定する。

説明

関数 XtPopdown の動作は以下である:
  • XtCheckSubclass を呼び、popup_shell が Shell のサブクラスであることを確認する。
  • popup_shell が現在ポップアップされていることを確認する。 ポップアップされていなければ、エラーを起こす。
  • popup_shell のウィンドウをアンマップする。
  • popup_shell の grab_kind が XtGrabNonexclusive または XtGrabExclusive ならば、 XtRemoveGrab を呼ぶ。
  • ポップアップシェルの popped_up フィールドに False をセットする。
  • シェルの popdown_callback リストのコールバック手続きを呼ぶ。

関数 XtCallbackPopdown は、クライアントデータのパラメータを XtPopdownID へのポインタにキャストする:

typedef struct {
     Widget shell_widget;
     Widget enable_widget;
} XtPopdownIDRec, *XtPopdownID;

shell_widget はポップダウンさせるポップアップシェルであり、 enable_widget はこれをポップアップさせるときに使われたウィジェットであ る。

関数 XtCallbackPopdown は、指定された shell_widget を使って XtPopdown を呼び、その後で enable_widget が再びイベントに反応できるようにするた め XtSetSensitive を呼ぶ。

シェルの名前が与えられなかった場合、 MenuPopdown はトランスレーションが指定されているウィジェットを使って XtPopdown を呼ぶ。 shell_name がトランスレーションテーブル内で指定されている場合、 MenuPopdown はウィジェットツリーを検索してシェルを見つけようとする。この検索は、こ の関数が呼び出されたウィジェットの親ウィジェットから始められる。 その親ウィジェットの子ウィジェットであるポップアップの中に指定した名前 を持つシェルが見つかった場合、そのシェルはポップダウンされる。 そうでない場合には、必要に応じて繋がっている親ウィジェットを上に向かっ て参照してゆく。 MenuPopdown がアプリケーションのトップレベルのシェルウィジェットに達し、しかもマッ チするシェルが見つからなかった場合には、この関数はエラーを起こす。