xdg_wm_base
struct xdg_wm_base_listener { void (*ping)(void *data, struct xdg_wm_base *xdg_wm_base, uint32_t serial); };
ハンドラ構造体
ping
クライアントが応答可能かどうかを判断するために、不定期に送られる。
xdg_wm_base_pong() を実行して応答する。
xdg_wm_base_pong() を実行して応答する。
int xdg_wm_base_add_listener(struct xdg_wm_base *xdg_wm_base, const struct xdg_wm_base_listener *listener, void *data);
ハンドラ設定
struct xdg_positioner *xdg_wm_base_create_positioner(struct xdg_wm_base *xdg_wm_base);
サーフェスを配置するための xdg_positioner を作成。
struct xdg_surface *xdg_wm_base_get_xdg_surface(struct xdg_wm_base *xdg_wm_base, struct wl_surface *surface);
ウィンドウ用の xdg_surface を作成する。
xdg_surface
struct xdg_surface_listener { void (*configure)(void *data, struct xdg_surface *xdg_surface, uint32_t serial); };
ハンドラ構造体
configure
configure シーケンスの終了を示す。
configure シーケンスは、サーフェスの状態の1つ以上のイベントのセット。
クライアントは、新しい状態に合わせてサーフェスを調整し、それを commit する前に、xdg_surface_ack_configure() を実行する必要がある。
複数の configure イベントが来た場合、最後の configure イベント以外は無視できる。
configure シーケンスは、サーフェスの状態の1つ以上のイベントのセット。
クライアントは、新しい状態に合わせてサーフェスを調整し、それを commit する前に、xdg_surface_ack_configure() を実行する必要がある。
複数の configure イベントが来た場合、最後の configure イベント以外は無視できる。
int xdg_surface_add_listener(struct xdg_surface *xdg_surface, const struct xdg_surface_listener *listener, void *data);
ハンドラ設定
struct xdg_toplevel *xdg_surface_get_toplevel(struct xdg_surface *xdg_surface);
サーフェスをトップレベルウィンドウにする。
struct xdg_popup *xdg_surface_get_popup(struct xdg_surface *xdg_surface, struct xdg_surface *parent, struct xdg_positioner *positioner);
サーフェスをポップアップウィンドウにする。
void xdg_surface_set_window_geometry(struct xdg_surface *xdg_surface, int32_t x, int32_t y, int32_t width, int32_t height);
ウィンドウの実体範囲 (影などの部分を除いた範囲) をセット。
これは、ウィンドウの位置やサイズをセットするものではない。
commit 時に適用される。
設定された場合、それを解除することはできない。
新しいサブサーフェスまたは wl_buffer がアタッチされても、この関数が実行されるまでは、範囲は変化しない。
これは、ウィンドウの位置やサイズをセットするものではない。
commit 時に適用される。
設定された場合、それを解除することはできない。
新しいサブサーフェスまたは wl_buffer がアタッチされても、この関数が実行されるまでは、範囲は変化しない。
void xdg_surface_ack_configure(struct xdg_surface *xdg_surface, uint32_t serial);
configure イベント時に、wl_surface を commit する場合、commit の前に実行する必要がある。
serial は configure イベントで渡された値をそのまま渡す。
例えば、トップレベルの場合、コンポーザーはこの情報を使用して、最大化状態またはフルスクリーン状態の時、ウィンドウを左上に移動させることができる。
この関数の直後に、すぐに commit する必要はない。
次回の commit の前に、何回か ack_configure を実行することもできる。
serial は configure イベントで渡された値をそのまま渡す。
例えば、トップレベルの場合、コンポーザーはこの情報を使用して、最大化状態またはフルスクリーン状態の時、ウィンドウを左上に移動させることができる。
この関数の直後に、すぐに commit する必要はない。
次回の commit の前に、何回か ack_configure を実行することもできる。
xdg_toplevel
struct xdg_toplevel_listener { void (*configure)(void *data, struct xdg_toplevel *xdg_toplevel, int32_t width, int32_t height, struct wl_array *states); void (*close)(void *data, struct xdg_toplevel *xdg_toplevel); # ver 4 void (*configure_bounds)(void *data, struct xdg_toplevel *xdg_toplevel, int32_t width, int32_t height); # ver 5 void (*wm_capabilities)(void *data, struct xdg_toplevel *xdg_toplevel, struct wl_array *capabilities); };
ハンドラ構造体
configure
クライアントに、サイズや状態の変更を行うよう要求する。
指定された状態は、すぐには適用されない。
width か height が 0 の場合、サイズの変更はなし。
states は、uint32_t (enum xdg_toplevel_state) の wl_array 配列になっている。
指定された状態は、すぐには適用されない。
width か height が 0 の場合、サイズの変更はなし。
states は、uint32_t (enum xdg_toplevel_state) の wl_array 配列になっている。
close
ユーザーによってウィンドウを閉じる要求が行われた時。
デスクトップ上の操作などで、アプリを閉じる操作が実行された時。
クライアントはこの要求を無視したりしてもよい。
デスクトップ上の操作などで、アプリを閉じる操作が実行された時。
クライアントはこの要求を無視したりしてもよい。
configure_bounds
ver 4
ウィンドウのサイズが制限されることが推奨される場合、xdg_toplevel.configure イベントの前に送信される場合がある。
width, height は、サーフェスの座標空間上で、サイズの境界幅。
0 の場合、境界幅は不明であり、イベントが送信されなかったときと同じ。
境界幅は、たとえば、モニターのサイズから、パネルやその他のシェルコンポーネントを除いたサイズであり、ウィンドウがこのサイズに収まらないことはない。
境界幅はいつでも変更される可能性があり、その場合、新しい configure_bounds が送信され、その後に xdg_toplevel.configure と xdg_surface.configure が送信される。
ウィンドウのサイズが制限されることが推奨される場合、xdg_toplevel.configure イベントの前に送信される場合がある。
width, height は、サーフェスの座標空間上で、サイズの境界幅。
0 の場合、境界幅は不明であり、イベントが送信されなかったときと同じ。
境界幅は、たとえば、モニターのサイズから、パネルやその他のシェルコンポーネントを除いたサイズであり、ウィンドウがこのサイズに収まらないことはない。
境界幅はいつでも変更される可能性があり、その場合、新しい configure_bounds が送信され、その後に xdg_toplevel.configure と xdg_surface.configure が送信される。
wm_capabilities
ver 5
コンポジターがサポートしている機能を通知する。
uint32_t の配列で、enum xdg_toplevel_state の値が格納されている。
サポートされていない機能がある場合、クライアントは、それに対応する UI 要素を非表示または無効にする必要がある。
コンポジターは、サポートしていない機能をクライアントが要求した場合、無視する。
コンポジターは、最初の xdg_surface.configure イベントの前に、このイベントを1回送信する必要がある。
サポートする機能が変更された場合、コンポジターはこのイベントを再度送信してた後、xdg_surface.configure イベントを送信する必要がある。
コンポジターがサポートしている機能を通知する。
uint32_t の配列で、enum xdg_toplevel_state の値が格納されている。
サポートされていない機能がある場合、クライアントは、それに対応する UI 要素を非表示または無効にする必要がある。
コンポジターは、サポートしていない機能をクライアントが要求した場合、無視する。
コンポジターは、最初の xdg_surface.configure イベントの前に、このイベントを1回送信する必要がある。
サポートする機能が変更された場合、コンポジターはこのイベントを再度送信してた後、xdg_surface.configure イベントを送信する必要がある。
enum xdg_toplevel_state { XDG_TOPLEVEL_STATE_MAXIMIZED = 1, XDG_TOPLEVEL_STATE_FULLSCREEN = 2, XDG_TOPLEVEL_STATE_RESIZING = 3, XDG_TOPLEVEL_STATE_ACTIVATED = 4, # ver 2 XDG_TOPLEVEL_STATE_TILED_LEFT = 5, XDG_TOPLEVEL_STATE_TILED_RIGHT = 6, XDG_TOPLEVEL_STATE_TILED_TOP = 7, XDG_TOPLEVEL_STATE_TILED_BOTTOM = 8, # ver 6 XDG_TOPLEVEL_STATE_SUSPENDED = 9, };
ウィンドウの状態
XDG_TOPLEVEL_STATE_MAXIMIZED
最大化。
configure イベントで指定された構成は、クライアントによって遵守される必要がある。
遵守されない場合、xdg_wm_base.invalid_surface_state エラーが発生する。
クライアントは、ウィンドウに影やその他の装飾を付けずに描画する必要がある。
configure イベントで指定された構成は、クライアントによって遵守される必要がある。
遵守されない場合、xdg_wm_base.invalid_surface_state エラーが発生する。
クライアントは、ウィンドウに影やその他の装飾を付けずに描画する必要がある。
XDG_TOPLEVEL_STATE_FULLSCREEN
フルスクリーン化。
configure イベントで指定された構成は最大値であり、クライアントはそれを超えてサイズを変更できない。
サーフェスがフルスクリーン領域全体を覆うには、クライアントが、指定された寸法に従う必要がある。
configure イベントで指定された構成は最大値であり、クライアントはそれを超えてサイズを変更できない。
サーフェスがフルスクリーン領域全体を覆うには、クライアントが、指定された寸法に従う必要がある。
XDG_TOPLEVEL_STATE_RESIZING
ウィンドウサイズが、ドラッグなどにより変更中。
configure イベントで指定された構成は最大値であり、クライアントはそれを超えてサイズを変更することはできない。
ただし、アスペクト比またはセルサイズ構成を持つクライアントは、より小さいサイズを使用できる。
configure イベントで指定された構成は最大値であり、クライアントはそれを超えてサイズを変更することはできない。
ただし、アスペクト比またはセルサイズ構成を持つクライアントは、より小さいサイズを使用できる。
XDG_TOPLEVEL_STATE_ACTIVATED
ウィンドウがアクティブ状態。
ウィンドウの装飾は、ウィンドウがアクティブの状態として描画される必要がある。
ただし、実際にキーボードまたはポインタのフォーカスがあることとは別である。
ウィンドウの装飾は、ウィンドウがアクティブの状態として描画される必要がある。
ただし、実際にキーボードまたはポインタのフォーカスがあることとは別である。
XDG_TOPLEVEL_STATE_TILED_LEFT
ver 2
サーフェスの左端はタイル化されている。
ウィンドウは、現在タイル化されたレイアウトになっており、左端は、タイルグリッドの別の部分に隣接していると見なされる。
クライアントは、ウィンドウの左側に影や装飾を付けずに描画する必要がある。
サーフェスの左端はタイル化されている。
ウィンドウは、現在タイル化されたレイアウトになっており、左端は、タイルグリッドの別の部分に隣接していると見なされる。
クライアントは、ウィンドウの左側に影や装飾を付けずに描画する必要がある。
XDG_TOPLEVEL_STATE_SUSPENDED
ver 6
サーフェスの再描画が中断されている。
サーフェスは現在、通常どおりに再描画されていない。
たとえば、サーフェスの内容が別のウィンドウに隠れている場合や、画面がロックされているために、出力がオフになっている場合など。
サーフェスの再描画が中断されている。
サーフェスは現在、通常どおりに再描画されていない。
たとえば、サーフェスの内容が別のウィンドウに隠れている場合や、画面がロックされているために、出力がオフになっている場合など。
int xdg_toplevel_add_listener(struct xdg_toplevel *xdg_toplevel, const struct xdg_toplevel_listener *listener, void *data);
ハンドラ設定
void xdg_toplevel_set_parent(struct xdg_toplevel *xdg_toplevel, struct xdg_toplevel *parent);
ウィンドウの親を設定する。
このウィンドウは、親のウィンドウよりも常に前面に表示される。
指定された親は、このウィンドウが表示されている間、常に表示されている状態でなければならない。
ダイアログやツールボックスなどで使う。
このウィンドウは、親のウィンドウよりも常に前面に表示される。
指定された親は、このウィンドウが表示されている間、常に表示されている状態でなければならない。
ダイアログやツールボックスなどで使う。
void xdg_toplevel_set_title(struct xdg_toplevel *xdg_toplevel, const char *title);
短いタイトルを UTF-8 で設定する。
タスクバーなどで表示されたりする。
タスクバーなどで表示されたりする。
void xdg_toplevel_set_app_id(struct xdg_toplevel *xdg_toplevel, const char *app_id);
アプリケーション識別子の文字列を設定する。
app_id は、ウィンドウが属するアプリケーションの、一般的なクラス名。
アプリケーションの .desktop ファイルの、拡張子を除く名前が推奨される。
"abc.desktop" なら "abc"。
コンポーザーはこれを使用して、複数のウィンドウをグループ化したり、新しいアプリケーションを起動する方法を決定したりすることができる。
D-Bus 起動可能アプリケーションの場合、ID は D-Bus サービス名として使用される。
app_id は、ウィンドウが属するアプリケーションの、一般的なクラス名。
アプリケーションの .desktop ファイルの、拡張子を除く名前が推奨される。
"abc.desktop" なら "abc"。
コンポーザーはこれを使用して、複数のウィンドウをグループ化したり、新しいアプリケーションを起動する方法を決定したりすることができる。
D-Bus 起動可能アプリケーションの場合、ID は D-Bus サービス名として使用される。
void xdg_toplevel_show_window_menu(struct xdg_toplevel *xdg_toplevel, struct wl_seat *seat, uint32_t serial, int32_t x, int32_t y);
サーバー側で実装されているウィンドウメニュー (タイトルバーを右クリックした時などのメニュー) を実行させる。
ボタンやキーが押された時に実行する。
ボタンやキーが押された時に実行する。
x,y
親の座標
void xdg_toplevel_move(struct xdg_toplevel *xdg_toplevel, struct wl_seat *seat, uint32_t serial);
ユーザー操作によって、ウィンドウ位置の移動を開始させる。
ウィンドウがフルスクリーンや最大化の時や、serial 値が有効でない場合、サーバーはクライアントからの要求を無視することができる。
カーソル形状は、サーバー側で自動的に変更される。
移動が完了したときに、デバイスのフォーカスが戻ってくるという保証はない。
ウィンドウがフルスクリーンや最大化の時や、serial 値が有効でない場合、サーバーはクライアントからの要求を無視することができる。
カーソル形状は、サーバー側で自動的に変更される。
移動が完了したときに、デバイスのフォーカスが戻ってくるという保証はない。
void xdg_toplevel_resize(struct xdg_toplevel *xdg_toplevel, struct wl_seat *seat, uint32_t serial, uint32_t edges);
ユーザー操作によって、ウィンドウサイズの変更を開始する。
edges
サイズを変更する端の位置。
enum xdg_toplevel_resize_edge { XDG_TOPLEVEL_RESIZE_EDGE_NONE = 0, XDG_TOPLEVEL_RESIZE_EDGE_TOP = 1, XDG_TOPLEVEL_RESIZE_EDGE_BOTTOM = 2, XDG_TOPLEVEL_RESIZE_EDGE_LEFT = 4, XDG_TOPLEVEL_RESIZE_EDGE_TOP_LEFT = 5, XDG_TOPLEVEL_RESIZE_EDGE_BOTTOM_LEFT = 6, XDG_TOPLEVEL_RESIZE_EDGE_RIGHT = 8, XDG_TOPLEVEL_RESIZE_EDGE_TOP_RIGHT = 9, XDG_TOPLEVEL_RESIZE_EDGE_BOTTOM_RIGHT = 10, };
void xdg_toplevel_set_max_size(struct xdg_toplevel *xdg_toplevel, int32_t width, int32_t height);
ウィンドウの最大サイズを設定する。
commit 時に適用される。
※サーバーはこの値を無視する場合があるため、常に適用されるとは限らない。
一度も設定されていない場合、または値が 0 の場合は、最大サイズは「なし」となる。
最小サイズよりも小さい値や、負の値の場合、プロトコルエラーが発生する。
commit 時に適用される。
※サーバーはこの値を無視する場合があるため、常に適用されるとは限らない。
一度も設定されていない場合、または値が 0 の場合は、最大サイズは「なし」となる。
最小サイズよりも小さい値や、負の値の場合、プロトコルエラーが発生する。
void xdg_toplevel_set_min_size(struct xdg_toplevel *xdg_toplevel, int32_t width, int32_t height);
ウィンドウの最小サイズを設定
void xdg_toplevel_set_maximized(struct xdg_toplevel *xdg_toplevel);
ウィンドウを最大化する。
この要求の後、サーバーは configure イベントを送る。
クライアントは、イベントで状態を取得し、最大化状態の描画や設定を行う。
すでに最大化されている場合、サーバーは configure イベントで、最大化が ON の状態を伝える。
この要求の後、サーバーは configure イベントを送る。
クライアントは、イベントで状態を取得し、最大化状態の描画や設定を行う。
すでに最大化されている場合、サーバーは configure イベントで、最大化が ON の状態を伝える。
void xdg_toplevel_set_fullscreen(struct xdg_toplevel *xdg_toplevel, struct wl_output *output);
ウィンドウをフルスクリーンの状態にする。
ウィンドウのサイズが、出力全体に広げられない場合は、中央に表示して、周りを黒色にする。
ウィンドウのサイズが、出力全体に広げられない場合は、中央に表示して、周りを黒色にする。
output
出力先。NULL でサーバーが自動選択する。
void xdg_toplevel_set_minimized(struct xdg_toplevel *xdg_toplevel);
ウィンドウを最小化する。
※現在最小化されているかどうかを確認する方法はない。
※現在最小化されているかどうかを確認する方法はない。
xdg_popup
struct xdg_popup_listener { void (*configure)(void *data, struct xdg_popup *xdg_popup, int32_t x, int32_t y, int32_t width, int32_t height); void (*popup_done)(void *data, struct xdg_popup *xdg_popup); # ver 3 void (*repositioned)(void *data, struct xdg_popup *xdg_popup, uint32_t token); };
ハンドラ構造体
configure
ポップアップに、位置やサイズを変更するよう要求される時。
x, y は、親の左上隅を基準として、xdg_positioner のルールに基づいて、ポップアップが配置される位置。
ver 2 以前では、初期設定として1回のみ送信される。
ver 3 以降では、ポップアップが xdg_positioner でセットアップされ、set_reactive が要求された場合、または reposition 要求に応答して、再度送信されることがある。
x, y は、親の左上隅を基準として、xdg_positioner のルールに基づいて、ポップアップが配置される位置。
ver 2 以前では、初期設定として1回のみ送信される。
ver 3 以降では、ポップアップが xdg_positioner でセットアップされ、set_reactive が要求された場合、または reposition 要求に応答して、再度送信されることがある。
popup_done
ポップアップがコンポジターによって閉じられたときに送信される。
クライアントは、この時点で xdg_popup_destroy() を使って破棄する必要がある。
クライアントは、この時点で xdg_popup_destroy() を使って破棄する必要がある。
repositioned
ver 3
xdg_popup_reposition() 要求の完了を通知するためのもの。
token 引数は、xdg_popup_reposition() で渡されるトークン。
このイベントが発行された直後に、xdg_popup.configure および xdg_surface.configure が送信され、更新されたサイズと位置、新しいシリアルが通知される。
クライアントは、オプションとして、ポップアップの内容を更新する必要があるが、新しい位置を有効にするには、新しいポップアップ構成を確認する必要がある。
xdg_popup_reposition() 要求の完了を通知するためのもの。
token 引数は、xdg_popup_reposition() で渡されるトークン。
このイベントが発行された直後に、xdg_popup.configure および xdg_surface.configure が送信され、更新されたサイズと位置、新しいシリアルが通知される。
クライアントは、オプションとして、ポップアップの内容を更新する必要があるが、新しい位置を有効にするには、新しいポップアップ構成を確認する必要がある。
int xdg_popup_add_listener(struct xdg_popup *xdg_popup, const struct xdg_popup_listener *listener, void *data);
ハンドラ設定
void xdg_popup_grab(struct xdg_popup *xdg_popup, struct wl_seat *seat, uint32_t serial);
ポップアップ開始時に、明示的にグラブする。
ポップアップが閉じられるか、破棄された場合、グラブは解除される。
サーバーがグラブを拒否した場合、ポップアップは解除される。
この時、ポップアップがネストされている場合は、すべてのポップアップが解除される。
ポップアップの親は、トップレベルか、明示的なグラブを持つ、別のポップアップであること。
親がポップアップの場合は、一番最後に作成したものから、順に破棄すること。
ネストされた一番最後のポップアップが破棄された場合は、親のポップアップがグラブされる。
グラブされているサーフェスは、すべてのサーフェス上のポインタイベントを取得する。
ポップアップが閉じられるか、破棄された場合、グラブは解除される。
サーバーがグラブを拒否した場合、ポップアップは解除される。
この時、ポップアップがネストされている場合は、すべてのポップアップが解除される。
ポップアップの親は、トップレベルか、明示的なグラブを持つ、別のポップアップであること。
親がポップアップの場合は、一番最後に作成したものから、順に破棄すること。
ネストされた一番最後のポップアップが破棄された場合は、親のポップアップがグラブされる。
グラブされているサーフェスは、すべてのサーフェス上のポインタイベントを取得する。
serial
ボタン、キー押しなどのユーザーアクション時のイベントのシリアル。
void xdg_popup_reposition(struct xdg_popup *xdg_popup, struct xdg_positioner *positioner, uint32_t token); //ver 3
すでに表示されているポップアップの位置を変更する。
ポップアップは、新しい positioner の設定により配置され、その後、xdg_popup.repositioned、xdg_popup.configure、xdg_surface.configure イベントが発行される。
以前の positioner によって設定されたパラメータは、すべて破棄される。
複数回実行された場合、コンポジターは最後の1つ以外をすべてスキップすることがある。
ポップアップが、親の configure イベントに応じて再配置される場合、クライアントは、xdg_positioner_set_parent_configure() と、場合によっては xdg_positioner_set_parent_size() を実行して、コンポジターがポップアップを適切に制限できるようにする必要がある。
ポップアップが、サイズ変更されている親と一緒に再配置されるが、configure イベントに応じて再配置される場合、クライアントは xdg_positioner_set_parent_size() を実行する必要がある。
ポップアップは、新しい positioner の設定により配置され、その後、xdg_popup.repositioned、xdg_popup.configure、xdg_surface.configure イベントが発行される。
以前の positioner によって設定されたパラメータは、すべて破棄される。
複数回実行された場合、コンポジターは最後の1つ以外をすべてスキップすることがある。
ポップアップが、親の configure イベントに応じて再配置される場合、クライアントは、xdg_positioner_set_parent_configure() と、場合によっては xdg_positioner_set_parent_size() を実行して、コンポジターがポップアップを適切に制限できるようにする必要がある。
ポップアップが、サイズ変更されている親と一緒に再配置されるが、configure イベントに応じて再配置される場合、クライアントは xdg_positioner_set_parent_size() を実行する必要がある。
token
xdg_popup.repositioned イベントに渡されるトークン。
新しいポップアップの位置は、対応する configure イベントがクライアントによって確認されるまで、有効にならない。
トークン自体は不透明で、他に特別な意味はない。
新しいポップアップの位置は、対応する configure イベントがクライアントによって確認されるまで、有効にならない。
トークン自体は不透明で、他に特別な意味はない。
xdg_positioner
void xdg_positioner_set_size(struct xdg_positioner *xdg_positioner, int32_t width, int32_t height);
表示するウィンドウのサイズを設定する。
width,height
0 以下の値でエラー。
void xdg_positioner_set_anchor_rect(struct xdg_positioner *xdg_positioner, int32_t x, int32_t y, int32_t width, int32_t height);
親座標でのアンカー矩形を指定する。
子サーフェスは、この矩形範囲を基準として配置される。
xdg_surface_set_window_geometry() で設定された範囲を基準とする。
子サーフェスは、この矩形範囲を基準として配置される。
xdg_surface_set_window_geometry() で設定された範囲を基準とする。
width,height
負の値を指定するとエラー。
void xdg_positioner_set_anchor(struct xdg_positioner *xdg_positioner, uint32_t anchor);
ポップアップの位置が配置される時に、アンカー矩形のどの辺を基準にするかを指定する。
anchor
基準になる辺。
TOP_LEFT なら、アンカー矩形の左上位置に合わせて配置する。
位置が一つだけなら、辺の中央に置かれる。
NONE なら、矩形の中央位置となる。
TOP_LEFT なら、アンカー矩形の左上位置に合わせて配置する。
位置が一つだけなら、辺の中央に置かれる。
NONE なら、矩形の中央位置となる。
enum xdg_positioner_anchor { XDG_POSITIONER_ANCHOR_NONE = 0, XDG_POSITIONER_ANCHOR_TOP = 1, XDG_POSITIONER_ANCHOR_BOTTOM = 2, XDG_POSITIONER_ANCHOR_LEFT = 3, XDG_POSITIONER_ANCHOR_RIGHT = 4, XDG_POSITIONER_ANCHOR_TOP_LEFT = 5, XDG_POSITIONER_ANCHOR_BOTTOM_LEFT = 6, XDG_POSITIONER_ANCHOR_TOP_RIGHT = 7, XDG_POSITIONER_ANCHOR_BOTTOM_RIGHT = 8, };
void xdg_positioner_set_gravity(struct xdg_positioner *xdg_positioner, uint32_t gravity);
アンカーの基準位置から、どの方向にポップアップを置くかを指定する。
gravity
方向。
位置が2つ指定されている場合、指定された方向に向けて配置される。
位置が1つのみの場合、指定されていない軸は、中央揃えされる。
位置が2つ指定されている場合、指定された方向に向けて配置される。
位置が1つのみの場合、指定されていない軸は、中央揃えされる。
enum xdg_positioner_gravity { XDG_POSITIONER_GRAVITY_NONE = 0, XDG_POSITIONER_GRAVITY_TOP = 1, XDG_POSITIONER_GRAVITY_BOTTOM = 2, XDG_POSITIONER_GRAVITY_LEFT = 3, XDG_POSITIONER_GRAVITY_RIGHT = 4, XDG_POSITIONER_GRAVITY_TOP_LEFT = 5, XDG_POSITIONER_GRAVITY_BOTTOM_LEFT = 6, XDG_POSITIONER_GRAVITY_TOP_RIGHT = 7, XDG_POSITIONER_GRAVITY_BOTTOM_RIGHT = 8, };
void xdg_positioner_set_constraint_adjustment( struct xdg_positioner *xdg_positioner, uint32_t constraint_adjustment);
最初に設定した位置とサイズで配置した時に、ウィンドウが画面をはみ出す場合、サーバー側で、位置またはサイズを自動で調整するように指定する。
constraint_adjustment
調整のフラグ。
X, Y 軸ごとに、複数のフラグで指定する。
指定されていない軸は、調整を許可しないという意味になる。
1つの軸に対して、複数の値が指定されている場合、優先順によって、適切なものが1つ使われる。
設定されていない場合のデフォルトは NONE (調整しない)。
SLIDE は、位置をスライドしてずらす。
FLIP は、位置を反転させる (アンカー矩形の反対側)。
RESIZE は、サイズを変更する。
X, Y 軸ごとに、複数のフラグで指定する。
指定されていない軸は、調整を許可しないという意味になる。
1つの軸に対して、複数の値が指定されている場合、優先順によって、適切なものが1つ使われる。
設定されていない場合のデフォルトは NONE (調整しない)。
enum xdg_positioner_constraint_adjustment { XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_NONE = 0, XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_SLIDE_X = 1, XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_SLIDE_Y = 2, XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_FLIP_X = 4, XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_FLIP_Y = 8, XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_RESIZE_X = 16, XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_RESIZE_Y = 32 };
SLIDE は、位置をスライドしてずらす。
FLIP は、位置を反転させる (アンカー矩形の反対側)。
RESIZE は、サイズを変更する。
void xdg_positioner_set_offset(struct xdg_positioner *xdg_positioner, int32_t x, int32_t y);
ポップアップの位置を、指定した px 分ずらす。
void xdg_positioner_set_reactive(struct xdg_positioner *xdg_positioner); //ver 3
リアクティブにセットすると、親ウィンドウが移動した場合などに、サーフェスの位置などを再調整する。
条件が変更され、ポップアップが再調整された場合、更新されたジオメトリを含む xdg_popup.configure イベントが送信され、その後に xdg_surface.configure イベントが送信される。
条件が変更され、ポップアップが再調整された場合、更新されたジオメトリを含む xdg_popup.configure イベントが送信され、その後に xdg_surface.configure イベントが送信される。