XReparentWindow(3) ウィンドウの親を変更する

書式

XReparentWindow(display, w, parent, x, y)

      Display *display;

      Window w;

      Window parent;

      int xy;

引き数

display
X サーバへの接続を指定する。
parent
親ウィンドウを指定する。
w
ウィンドウを指定。
x

y
新しい親ウィンドウ内での位置の x, y 座標を指定する。

説明

指定したウィンドウがマップされている場合、 XReparentWindow はこのウィンドウに対して自動的に UnmapWindow を実行してから、このウィンドウをウィンドウ階層内の現在位置より取り除き、 そして指定した親ウィンドウの子として挿入する。 このウィンドウは兄弟ウィンドウに対するスタック順が一番上となるように 配置される。

指定したウィンドウの親を変えた後、 XReparentWindow は X サーバに ReparentNotify イベントを生成させる。 このイベントで返される override_redirect メンバには、ウィンドウの override_redirect 属性が設定される。 このメンバに True が設定されている場合、ウィンドウマネージャは普通はこのウィンドウを無視 すべきである。 最後に、もし指定したウィンドウが最初からマップされていれば、X サーバは このウィンドウに対して自動的に MapWindow リクエストを実行する。

以前に他のウィンドウに隠されていたウィンドウに対しては、X サーバは通常 の露出(exposure)の処理を実行する。 直前の MapWindow リクエストによって隠蔽された、最初の UnmapWindow リクエストが示す領域に対しては X サーバは Expose イベントを生成しない。 エラー BadMatch は以下の場合に起こる。

  • 新しい親ウィンドウが古い親ウィンドウと同じスクリーン上にない。
  • 新しい親ウィンドウが指定したウィンドウ自身かその下位ウィンドウである。
  • 新しい親ウィンドウが InputOnly であり、かつ移動するウィンドウが InputOnly でない。
  • 指定したウィンドウが ParentRelative の背景を持つが、新しい親ウィンドウと指定したウィンドウの深さが異なる。

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

返り値

BadWindow
引き数 Window の値が、定義されている Window を指していない。