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;
関数 XSetWMNormalHints は指定したウィンドウの WM_NORMAL_HINTS プロパティのサイズヒントを置き 換える。 このプロパティがまだ存在しない場合、 XSetWMNormalHints は指定したウィンドウの WM_NORMAL_HINTS プロパティにサイズヒントを設定 する。 このプロパティは WM_SIZE_HINTS 型、フォーマット 32 で格納される。
XSetWMNormalHints はエラー BadAlloc, BadWindow を起こすことがある。
関数 XGetWMNormalHints は、指定したウィンドウの WM_NORMAL_HINTS プロパティに格納されている サイズヒントを返す。 このプロパティが WM_SIZE_HINTS 型、フォーマット 32 であり、新旧いず れのサイズヒント構造体(古いものは ICCCM 以前の形式)でも格納できる十分 な長さを持つ場合、 XGetWMNormalHints は XSizeHints の各フィールドを設定し、ユーザが与えたフィールドのリストを(既に定義 されている値を含んでいるかどうかに関わらず)引き数 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 以前の形式)も格納できる十分な 長さを持つ場合、 XGetWMSizeHints は XSizeHints の各フィールドを設定し、ユーザが与えたフィールドのリストを(既に定義 されている値を含んでいるかどうかに関わらず)引き数 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 を起こすことがある。
/* サイズヒントのマスクビット値 */
#define | USPosition | (1L << 0) |
/* ユーザが指定した x, y */
|
#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 の利用は極めて好ましくない点に注意すること。