XSetWMSizeHints(3) サイズヒント構造体の割り当てと、ウィンドウの WM_NORMAL_HINTS プロパティの設定・取得

Other Alias

XAllocSizeHints, XSetWMNormalHints, XGetWMNormalHints, XGetWMSizeHints, XSizeHints

書式

XSizeHints *XAllocSizeHints()

void XSetWMNormalHints(display, w, hints)

      Display *display;

      Window w;

      XSizeHints *hints;

Status XGetWMNormalHints(display, w, hints_return, supplied_return)

      Display *display;

      Window w;

      XSizeHints *hints_return;

      long *supplied_return;

void XSetWMSizeHints(display, w, hints, property)

      Display *display;

      Window w;

      XSizeHints *hints;

      Atom property;

Status XGetWMSizeHints(display, w, hints_return, supplied_return, property)

      Display *display;

      Window w;

      XSizeHints *hints_return;

      long *supplied_return;

      Atom property;

引き数

display
X サーバへの接続を指定する。
hints
通常の状態におけるウィンドウのサイズヒントを指定する。
hints
使われる XSizeHints 構造体を指定する。
hints_return
通常の状態でのウィンドウのサイズヒントが返される。
property
プロパティ名を指定する。
supplied_return
ユーザが与えたヒントが返される。
w
ウィンドウを指定する。

説明

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

関数 XSetWMNormalHints は指定したウィンドウの WM_NORMAL_HINTS プロパティのサイズヒントを置き 換える。 このプロパティがまだ存在しない場合、 XSetWMNormalHints は指定したウィンドウの WM_NORMAL_HINTS プロパティにサイズヒントを設定 する。 このプロパティは WM_SIZE_HINTS 型、フォーマット 32 で格納される。

XSetWMNormalHints はエラー BadAlloc, BadWindow を起こすことがある。

関数 XGetWMNormalHints は、指定したウィンドウの WM_NORMAL_HINTS プロパティに格納されている サイズヒントを返す。 このプロパティが WM_SIZE_HINTS 型、フォーマット 32 であり、新旧いず れのサイズヒント構造体(古いものは ICCCM 以前の形式)でも格納できる十分 な長さを持つ場合、 XGetWMNormalHintsXSizeHints の各フィールドを設定し、ユーザが与えたフィールドのリストを(既に定義 されている値を含んでいるかどうかに関わらず)引き数 supplied_return に 設定し、0 でないステータスを返す。 この条件を満たさない場合は、この関数はステータスとして 0 を返す。

XGetWMNormalHints が成功した時に ICCCM 形式の古いサイズヒントプロパティが取得された場合、 引き数 supplied_return には次のビットが含まれる。

(USPosition|USSize|PPosition|PSize|PMinSize|
 PMaxSize|PResizeInc|PAspect)

プロパティが十分大きく、プロパティがベースサイズとウィンドウの gravity 値も持つことができた場合、引き数 supplied_return には次のビットが含ま れる。

PBaseSize|PWinGravity

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

関数 XSetWMSizeHints は指定したウィンドウの指定したプロパティのサイズヒントを置き換える。 そのプロパティがまだ存在しない場合、 XSetWMSizeHints は指定したウィンドウのプロパティにサイズヒントを設定する。 このプロパティは WM_SIZE_HINTS 型、フォーマット 32 で格納される。 ウィンドウの通常のサイズヒントを設定するには、関数 XSetWMNormalHints を使うことができる。

XSetWMSizeHints はエラー BadAlloc, BadAtom, BadWindow を起こすことがある。

関数 XGetWMSizeHints は、指定したウィンドウの指定したプロパティに格納されているサイズヒント を返す。 このプロパティが WM_SIZE_HINTS 型、フォーマット 32 であり、新旧いず れのサイズヒント構造体(古いものは ICCCM 以前の形式)も格納できる十分な 長さを持つ場合、 XGetWMSizeHintsXSizeHints の各フィールドを設定し、ユーザが与えたフィールドのリストを(既に定義 されている値を含んでいるかどうかに関わらず)引き数 supplied_return に 設定し、0 でないステータスを返す。 この条件を満たさない場合は、この関数はステータスとして 0 を返す。 ウィンドウの通常のサイズヒントを取得するためには、関数 XGetWMNormalHints を利用できる。

XGetWMSizeHints が成功し、ICCCM の古いサイズヒントプロパティが取得された場合、引き数 supplied_return は次のビットを含む。

(USPosition|USSize|PPosition|PSize|PMinSize|
 PMaxSize|PResizeInc|PAspect)

プロパティが十分大きく、プロパティがベースサイズとウィンドウの gravity 値も含むことができた場合、引き数 supplied_return には次のビットが含まれ る。

PBaseSize|PWinGravity

XGetWMSizeHints はエラー BadAtom, BadWindow を起こすことがある。

プロパティ

WM_NORMAL_HINTS
通常の状態のウィンドウのサイズヒント。 このプロパティの C 言語における型は XSizeHints である。

構造体

XSizeHints 構造体の内容を示す:

#define USPosition (1L << 0)


#define USSize (1L << 1)


#define PPosition (1L << 2)


#define PSize (1L << 3)


#define PMinSize (1L << 4)


#define PMaxSize (1L << 5)


#define PResizeInc (1L << 6)


#define PAspect (1L << 7)


#define PBaseSize (1L << 8)
#define PWinGravity (1L << 9)
#define PAllHints (PPosition|PSize|
PMinSize|PMaxSize|
PResizeInc|PAspect)

/* 値 */
typedef struct {
     long flags;         
     int x, y;           
     int width, height;  
     int min_width, min_height;
     int max_width, max_height;
     int width_inc, height_inc;
     struct {
            int x;       
            int y;       
     } min_aspect, max_aspect;
     int base_width, base_height;
     int win_gravity;
     
} XSizeHints;

x, y, width, height メンバは今は古い仕様の使うべきでないメンバであり、 互換性のために残されているだけである。 min_width, min_height メンバはアプリケーションが使いものになる最小限の ウィンドウのサイズを指定する。 max_width, max_height メンバはウィンドウの最大サイズを指定する。 width_inc, height_inc メンバは、そのウィンドウにとって望ましいサイズに 変更する場合の、サイズの増分(最小値から最大値)を定義する。 min_aspect, max_aspect メンバは x, y の比として表され、望ましいアスペ クト比の範囲を指定することができる。 base_width, base_height はウィンドウの望ましいサイズを定義する。 ウィンドウマネージャはウィンドウの位置と境界幅を判断し、win_gravity メ ンバで指定されたウィンドウ全体の外側の長方形の位置にウィンドウを配置する。 ウィンドウの外側の長方形には、境界とウィンドウマネージャが付けた修飾部 分も含められる。 つまり、ウィンドウマネージャがクライアントが要求した位置にそのウィンドウ を配置すると決めたならば、win_gravity で指定される親ウィンドウの境界上 における位置は、ウィンドウマネージャがなければ本来クライアントの ウィンドウとなっていた場所になる。

マクロ PAllHints の利用は極めて好ましくない点に注意すること。

返り値

BadAlloc
要求されたリソースやサーバメモリの割り当てにサーバが失敗した。
BadAtom
引き数 Atom の値が、定義されている Atom を指していない。
BadWindow
引き数 Window の値が、定義されている Window を指していない。