XAllocWMHints(3X11)

名前
XAllocWMHints, XSetWMHints, XGetWMHints, XWMHints - ウィンドウマネージャのヒント構造体を割り当てる関数とウィンドウの WM_HINTS プロパティの設定・取得を行う関数群

書式
XWMHints *XAllocWMHints()

XSetWMHints(display, w, wmhints)
      Display *display;
      Window w;
      XWMHints *wmhints;

XWMHints *XGetWMHints(display, w)
      Display *display;
      Window w;

引き数

display
    X サーバへの接続を指定する。

w   ウィンドウを指定する。

wmhints
    使用する 構造体を指定する。

説明
関数 は 構造体を割り当て、この構造体へのポインタを返す。 構造体の全てのフィールドは 0 で初期化される点に注意すること。 十分なメモリが確保できない場合、 は NULL を返す。 この構造体に割り当てられたメモリを解放する時には を使用すること。

関数 はウィンドウマネージャへのヒントを設定する。 このヒントにはアイコンの情報や位置やウィンドウの初期状態、アプリケーション はウィンドウマネージャ経由でキーボード入力を取得するかどうかなどの情 報が含まれる。

はエラー を起こすことがある。

関数 はウィンドウマネージャへのヒントを読み、ウィンドウに WM_HINTS プロパティ が設定されていなければ NULL を返し、成功すれば 構造体へのポインタを返す。 データを使い終った後は を呼んでメモリを解放すること。

はエラー を起こすことがある。

プロパティ

WM_HINTS
    ウィンドウマネージャの使用のためにクライアントによって設定される追加 のヒント。 このプロパティの C 言語での型は である。

構造体
構造体の内容は以下である。

/* ウィンドウマネージャへのヒントのマスクビット */
#define |  | (1L << 0)
#define |  | (1L << 1)
#define |  | (1L << 2)
#define |  | (1L << 3)
#define |  | (1L << 4)
#define |  | (1L << 5)
#define |  | (1L << 6)
#define |  | (1L << 8)
#define |  | (InputHint|StateHint|IconPixmapHint| IconWindowHint|IconPositionHint| IconMaskHint|WindowGroupHint)
/* 値 */ typedef struct {
    long flags;    /* 構造体のどのフィールドが設定されているかを示すマーク */
    Bool input;    /* このアプリケーションはウィンドウマネージャ経由でキーボード入力を取得するかどうか /*
    int initial_state;    /* 後述 */
    Pixmap icon_pixmap;    /* アイコンとして使用されるピックスマップ */
    Window icon_window;    /* アイコンとして使用されるウィンドウ */
    int icon_x, icon_y;    /* アイコンの初期位置 */
    Pixmap icon_mask;    /* icon_pixmap のマスクとして使われるピックスマップ */
    XID window_group;    /* 関連するウィンドウグループの ID */
    /* この構造体は将来拡張されるかもしれない */ } XWMHints;

input メンバは、アプリケーションが使う入力フォーカスモデルを ウィンドウマネージャに伝えるために用いられる。 リアルエステートドリブンフォーカス(real-estate driven focus)を使う X バージョン 10 スタイルのアプリケーションのように、入力を期待するが明示 的にサブウィンドウにフォーカスを設定しない(つまり、フォーカス管理の プッシュモデルを使っている)アプリケーションでは、このメンバを に設定すべきである。 同様に、ウィンドウマネージャによってトップレベルウィンドウにフォーカス が与えられた時だけ入力フォーカスがサブウィンドウに設定される アプリケーションでも、このメンバを に設定すべきである。 キーボードの入力が必要なときには明示的にフォーカスをサブウィンドウに設 定することによって自分自身で入力を管理するような(つまり、フォーカス管 理のプルモデルを使っている)アプリケーションでは、このメンバを に設定すべきである。 キーボードの入力を全く使わないアプリケーションでも、このメンバを に設定すべきである。

プルモデルのウィンドウマネージャは、input メンバが であるアプリケーションのトップレベルウィンドウに入力フォーカスを設定 することによって、プッシュモデルのアプリケーションが入力を取得できるよ うにしなければならない。 プッシュモデルのウィンドウマネージャは、しかるべきタイミング(例えば、 input メンバが であるアプリケーションが入力フォーカスをサブウィンドウに設定したとき) に入力フォーカスを にリセットすることによって、プルモデルのアプリケーションがウィンドウマ ネージャを破壊してしまわないように注意しなければならない。

initial_state フラグの定義を以下に示す。
#define |  | 0 |
#define |  | 1 | /* ほとんどのアプリケーションはこれで起動する */
#define |  | 3 | /* アプリケーションをアイコンとして起動させたい */
icon_mask は icon_pixmap のどのピクセルがアイコンとして使用されるかを 指定する。 これを使えば非矩形のアイコンを利用できる。 icon_pixmap と icon_mask はいずれもビットマップでなければならない。 icon_window は、与えたウィンドウをアイコンとして使うことができるウィン ドウマネージャのために、アプリケーションにウィンドウを提供させる。 window_group は、このウィンドウが他のウィンドウのグループに属している ことを示す。 例えばある単独のアプリケーションが複数のトップレベルウィンドウを操作す る場合に window_group を使えば、ウィンドウマネージャが 1 つのウィンドウ だけでなく全てのウィンドウを同時にアイコン化させるために十分な情報を与 えることができる。

フラグが flags フィールドに設定されていれば、クライアントはウィンド ウの内容が緊急事項であり、ユーザの適時な応答を必要とすることを示す。 ウィンドウマネージャはこのフラグが設定されている間、ユーザの注意を引 くために何らかの動作をする。 クライアントは、ユーザがこの urgency フラグをクリアするための何らかの 手段(ウィンドウの urgent フラグの条件を緩和するか、単にアラームを止め る)か、ウィンドウが消されるための手段を用意しなければならない。

返り値

要求されたリソースやサーバのメモリの割り当てにサーバが失敗した。

引き数 Window の値が、定義されたウィンドウを指していない。

関連項目
XAllocClassHint(3X11), XAllocIconSize(3X11), XAllocSizeHints(3X11), XFree(3X11), XSetCommand(3X11), XSetTransientForHint(3X11), XSetTextProperty(3X11), XSetWMClientMachine(3X11), XSetWMColormapWindows(3X11), XSetWMIconName(3X11), XSetWMName(3X11), XSetWMProperties(3X11), XSetWMProtocols(3X11), XStringListToTextProperty(3X11)
Xlib - C Language X Interface