Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ XGetWMHints(3X11) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

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)

XAllocWMHints(3X11)  —  NEWS-OS Programmer’s Manual

名称

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;

引数

displayX サーバへの接続を指定します。

wウィンドウを指定します。

wmhintsXWMHints 構造体を指定します。

解説

XAllocWMHints 関数は XWMHints 構造体へのポインタを割り当て、返します。 XWMHints 構造体の全てのフィールドはゼロに初期設定されています。 必要なメモリが不足した場合、 XAllocWMHints はナルを返します。 この構造体に割り当てられたメモリを解放するには、 XFree を使います。 XSetWMHints 関数はウィンドウマネージャのヒントを設定します。 そのヒントにはアイコンに関する情報やその位置、 ウィンドウの初期状態、 またアプリケーションのキーボード入力獲得がウィンドウマネージャによるかどうかなどの情報を含みます。 XSetWMHints で発生するエラーには、 BadAlloc および BadWindow エラーがあります。 XGetWMHints 関数はウィンドウマネージャのヒントを読み、 ウィンドウ上に WM_HINTS 属性がない場合にはナルを返し、 問題がなければ XWMHints 構造体へのポインタを返します。 データが不要になったら、 XFree をコールして領域を解放してください。 XGetWMHints で発生するエラーには、 BadWindow エラーがあります。

属性

WM_HINTS クライアントが追加設定するヒントで、ウィンドウマネージャが使用します。 この属性の C 言語の type は XWMHints です。

構造体

XWMHints 構造体は、以下の様になります。 /∗ ウィンドウマネージャのヒントマスクビット ∗/

#define InputHint (1L << 0)
#define StateHint (1L << 1)
#define IconPixmapHint (1L << 2)
#define IconWindowHint (1L << 3)
#define IconPositionHint (1L << 4)
#define IconMaskHint (1L << 5)
#define WindowGroupHint (1L << 6)
#define AllHints (InputHint|StateHint|IconPixmapHint|
IconWindowHint|IconPositionHint|
IconMaskHint|WindowGroupHint)

 /∗ 値 ∗/
 typedef struct {
long flags;/∗ 構造体のどのフィールドが定義されているかを示す ∗/
Bool input;/∗ キーボード入力の獲得がWMによるかどうか? ∗/
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 ドライブンフォーカスを使用する X バージョン 10 スタイルのアプリケーション同様、このメンバを True に設定しなければなりません。 また、 ウィンドウマネージャによって最上位のウィンドウになるときだけサブウィンドウに入力フォーカスを設定するアプリケーションでも、 このメンバを True に設定しなければなりません。 キーボード入力を要求するのがいつであっても (フォーカス管理のプルモデル使用)、 サブウィンドウのひとつにフォーカスを設定することで、 自身の入力フォーカスを管理するアプリケーションでは、 このメンバを False に設定しなければなりません。 まったくキーボード入力を要求しないアプリケーションでも、 このメンバを False に設定しなければなりません。 プルモデルウィンドウマネージャはプッシュモデルアプリケーションが入力を得られるように、 メンバ input が True であるアプリケーションの最上位ウィンドウへ入力フォーカスを設定しなければなりません。 プッシュモデルウィンドウマネージャは、 PointerRoot が適切な場合(例えば、input メンバが False であるアプリケーションが、 入力フォーカスをサブウィンドウのひとつに設定するのがいつであろとも)に入力フォーカスを再設定することで、 プルモデルアプリケーションに破壊されないようにすること。 initial_state フラグの定義は、以下の様になります。

#define WithdrawnState 0
#define NormalState 1 /∗ おもなアプリケーションはこの方法で開始する。∗/
#define IconicState 3 /∗ アイコンとして開始したいアプリケーション ∗/

icon_mask はアイコンとして使用すべき icon_pixmap のピクセルを指定します。 これによって、 非長方形のアイコンが可能です。 icon_pixmap および icon_mask はビットマップでなければならない。 icon_window によって、 アプリケーションはこのような使用を支援するウィンドウマネージャのアイコンとしてウィンドウを使用出来ます。 window_group によって、 このウィンドウが他のウィンドウグループに属するように設定出来ます。 例えば、 1 つのアプリケーションが複数の最上位ウィンドウを操る場合、 1 つのウィンドウどころか全てのウィンドウをアイコン化できるウィンドウマネージャについて充分な情報を得られます。

診断

BadAlloc サーバはリクエストされたリソースまたはサーバメモリの割り当てに失敗した。

BadWindow
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

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026