PointerEnter イベントは、ポイントが
Visual に入るたびに
Visual で発生します。ポインタが
Visual を離れると、その
Visual で
PointerLeave イベントが発生します。
PointerEnter および
PointerLeave イベントはペアで発生するので、たとえば、オブジェクトの
PointerEnter ハンドラでビットを設定し、
PointerLeave ハンドラでこれをクリアするように設定すると、ポインタがオブジェクトまたはそのグラフィカルな子の上にある場合のみビットが設定されます。
PointerEnter/
PointerLeave は
PointerLeafEnter/
PointerLeafLeave と比較することができます。non-leaf イベントは、ポインタが
g と
g の子孫でないオブジェクトの間を移動する際に、オブジェクト
g でのみ発生します。リーフ イベントは、ポインタが
g とその他の任意のオブジェクト (
g のグラフィカルな子孫も含む) の間を移動する際に、オブジェクト
g でのみ発生します。実際には、ほとんどの場合はリーフ イベントより non-leaf イベントのモニタリングの方が適切です。
PointerEnter イベントのスタティック イベント ハンドラは
on-pointer-enter です。
PointerEnter および
PointerLeave イベントの詳細については、『Curl 開発者ガイド』の「
ポインタ イベント」のセクションを参照してください。
現在の実装では、ポインタがオブジェクトに入り、ドラッグを開始し、ドラッグの間にオブジェクトを離れると、上記で説明された
PointerEnter および
PointerLeave イベントのネスティングは保持されません。ポインタがオブジェクトに入っている間は
PointerEnter イベントが発生しますが、ポインタがオブジェクトを離れている間は
PointerLeave ではなく
DragLeave イベントが発生します。ドラッグがオブジェクトに入り、そのオブジェクト内で終了し、結果としてポインタがオブジェクトを離れると、同様のネスティングの失敗が発生します。この非対称性は、Curl 言語の将来のバージョンで排除する予定です。