Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ XAllocWMHints(3X11) — NEWS-os 4.1C

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ドライブンフォーカスを使用するX10スタイルのアプリケーション同様、このメンバーを 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.1C

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