XConfigureWindow(3) ウィンドウの設定、ウィンドウ変更構造体

Other Alias

XMoveWindow, XResizeWindow, XMoveResizeWindow, XSetWindowBorderWidth, XWindowChanges

書式

XConfigureWindow(display, w, value_mask, values)

      Display *display;

      Window w;

      unsigned int value_mask;

      XWindowChanges *values;

XMoveWindow(display, w, x, y)

      Display *display;

      Window w;

      int xy;

XResizeWindow(display, w, width, height)

      Display *display;

      Window w;

      unsigned int widthheight;

XMoveResizeWindow(display, w, x, y, width, height)

      Display *display;

      Window w;

      int xy;

      unsigned int widthheight;

XSetWindowBorderWidth(display, w, width)

      Display *display;

      Window w;

      unsigned int width;

引き数

display
X サーバへの接続を指定する。
value_mask
構造体の値を使って設定する対象の値を指定する。 このマスクは有効なウィンドウ設定値ビットの論理和である。
values
XWindowChanges 構造体を指定する。
w
再設定、移動、サイズ変更を行なうウィンドウを指定する。
width
ウィンドウ境界の幅を指定する。
width

height
ウィンドウの幅と高さを指定する。 これはウィンドウの内側の大きさである。
x

y
x, y 座標を指定する。 これらの値はウィンドウの境界の左上の新しい位置を定義するが、 境界を持たないウィンドウの場合はウィンドウ自身の左上の位置を示す。 新しい値は親ウィンドウに対する相対座標で表される。

説明

関数 XConfigureWindowXWindowChanges 構造体で指定された値を用いて、ウィンドウの大きさ、位置、境界、スタック 順を再設定する。 指定されていない値は、そのウィンドウの現在のジオメトリから求める。

stack_mode でないのに兄弟ウィンドウが指定されている場合と、 指定したウィンドウが実際には兄弟ウィンドウでない場合には、エラー BadMatch となる。 BottomIf, TopIf, Opposite の計算は、ウィンドウの最初のジオメトリではなく、( XConfigureWindow に渡された他の引き数によって操作された)最終的なジオメトリに関して実行される。 ウィンドウ、下位ウィンドウ、新しく可視状態になったウィンドウの バッキングストアの内容は破棄されるか、スクリーンの最新の内容を 反映するように変更される(実際にどうなるかは実装による)。

XConfigureWindow はエラー BadMatch, BadValue, BadWindow を起こすことがある。

関数 XMoveWindow は指定したウィンドウを指定した x, y 座標へ移動させる。 ただし、ウィンドウの大きさやマッピングの状態を変更したり、 ウィンドウを前面に移動させたりはしない。 マップされたウィンドウを動かすと、ウィンドウの表示内容が失われることが あるし、そうでないこともある。 これは動かしたウィンドウが子でないウィンドウに隠されているかどうか、 あるいはバッキングストアが存在するかどうかによる。 ウィンドウの表示内容が失われた場合、X サーバは Expose イベントを生成する。 マップされているウィンドウを動かすと、それまでそのウィンドウに隠されて いたウィンドウで Expose イベントが生じる。

ウィンドウの override-redirect フラグが False であり、かつ親ウィンドウで SubstructureRedirectMask を選択している他のウィンドウがある場合、X サーバは ConfigureRequest を生成し、それ以上の処理は行わない。 それ以外の場合は、ウィンドウの移動が起こる。

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

関数 XResizeWindow は指定したウィンドウの、境界を含まない内部の大きさを変更する。 この関数は、ウィンドウの左上の座標や原点を変更しないし、ウィンドウの 再スタックも行わない。 マップされているウィンドウのサイズを変えると表示内容が失われて Expose イベントが生成されることがある。 マップされているウィンドウのサイズを小さくすると、それまでその ウィンドウに隠されていた他のウィンドウで Expose イベントが生成される。

ウィンドウの override-redirect フラグが False であり、かつ親ウィンドウ上で SubstructureRedirectMask を選択している他のクライアントがある場合、X サーバは ConfigureRequest を生成し、それ以上の処理は行わない。 幅と高さのいずれかが 0 の場合、エラー BadValue となる。

XResizeWindow はエラー BadValue, BadWindow を起こすことがある。

関数 XMoveResizeWindow は指定したウィンドウの大きさと位置を変える。 ウィンドウの前面への移動は行わない。 マップされているウィンドウの移動やサイズ変更を行った場合、 そのウィンドウで Expose イベントが起こることがある。 ウィンドウの移動の際のサイズと位置のパラメータによっては、 それまでそのウィンドウに隠されていたウィンドウで Expose イベントが起こることがある。

ウィンドウの override-redirect フラグが False であり、かつ親ウィンドウ上で SubstructureRedirectMask を選択している他のクライアントがある場合、X サーバは ConfigureRequest を生成し、それ以上の処理は行わない。 そうでない場合、ウィンドウのサイズや位置は変更される。

XMoveResizeWindow はエラー BadValue, BadWindow を起こすことがある。

関数 XSetWindowBorderWidth は指定したウィンドウの境界の幅を指定したサイズにする。

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

構造体

XWindowChanges 構造体の内容を示す:

#define CWX (1<<0)
#define CWY (1<<1)
#define CWWidth (1<<2)
#define CWHeight (1<<3)
#define CWBorderWidth (1<<4)
#define CWSibling (1<<5)
#define CWStackMode (1<<6)
typedef struct {
     int x, y;
     int width, height;
     int border_width;
     Window sibling;
     int stack_mode;
} XWindowChanges;

x, y メンバはウィンドウの x, y 座標をセットするために用いる。 これは親ウィンドウの原点に対する相対座標で、ウィンドウの左上外側の隅の 位置を示す。 width, height メンバはウィンドウの内側の大きさをセットするために用いる。 これは境界は含まない 0 以外の値でなければならず、そうでない場合にはエ ラー BadValue となる。 ルートウィンドウを設定しようとしても何も起こらない。

border_width メンバでは、ウィンドウ境界の幅をピクセル単位で指定する。 境界幅だけをセットすると、ウィンドウ左上外側の隅の位置は変わらないが、 ウィンドウの原点の絶対位置が移動する。 InputOnly のウィンドウの border-width 属性値に 0 でない値をセットしようとした場 合には、エラー BadMatch となる。

sibling メンバには、スタック操作につかう兄弟ウィンドウをセットする。 stack_mode メンバでは、ウィンドウがどのように再スタックされるかを指定 する。指定できる値は Above, Below, TopIf, BottomIf, Opposite. のいずれかである。

返り値

BadMatch
InputOnly のウィンドウをドロウアブルとして用いた。
BadMatch
引き数や引き数の組は正しい型・範囲を持っているが、そのリクエストが要求する 他の条件に適合できなかった。
BadValue
指定された数値に、リクエストの許容範囲を越えているものがある。引き数に対 して特定の範囲が指定されていなければ、引き数の型で定義されている全ての範 囲が許される。選択肢として定義されている引き数はこのエラーを起こすことが ある。
BadWindow
引き数 Window の値が、定義されている Window を指していない。