Solaris X Window System 開発ガイド

入力配送モデル

オーバーレイウィンドウは、標準の X ウィンドウと同様にイベントを処理の対象とすることができます。オーバーレイウィンドウは、その実際に目に見える範囲内で発生する任意のイベントを受信します。イベントが発生する位置のピクセルのペイント型は問題ではありません。たとえば、オーバーレイウィンドウがウィンドウ進入イベントを処理の対象としている場合に、ポインタがウィンドウの実際に目に見える範囲内に入ると、ピクセルが透明であっても不透明であっても、オーバーレイウィンドウはウィンドウ進入イベントを受信します。

このことは、アプリケーション内でグラフィカルオブジェクトの対話的なピッキング (選択) をどのように実装するかという問題に影響を与えます。すなわち、アンダーレイウィンドウに描画されたグラフィカルオブジェクトの上にあるオーバーレイウィンドウに対して、別のグラフィカルオブジェクトを描画するアプリケーションは、オーバーレイウィンドウ内またはアンダーレイウィンドウ内のどちらかのイベントを処理の対象とする必要がありますが、その両方のウィンドウ内のイベントを処理の対象とする必要はありません。入力イベントを受け取ったアプリケーションは、オーバーレイ/アンダーレイの階層構造に関する知識を利用して、どちらのグラフィカルオブジェクトが選択されたかを確定しなければなりません。

たとえば、アプリケーションがアンダーレイウィンドウ内のイベントを処理の対象としていると想定します。このアプリケーションが座標 (x,y) でイベントを受信すると、まず最初にオーバーレイ内のその座標にグラフィカルオブジェクトが存在するかどうかが調べられます。存在すれば、そこで探索処理は終了します。存在しなければ、アプリケーションは、アンダーレイ内のその座標にグラフィカルオブジェクトが存在するかどうかを確認しなければなりません。