Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: MouseTouchEventHandler において button の値が一部 PointerEventHandler と異なってしまう問題を修正 #295

Merged
merged 3 commits into from
Oct 23, 2023

Conversation

yu-ogi
Copy link
Contributor

@yu-ogi yu-ogi commented Oct 19, 2023

このPullRequestが解決する内容

MouseTouchEventHandler において button の値が一部 PointerEventHandler と異なってしまう問題を修正します。

挙動の違い

  1. マウス左ボタンを押下
  2. カーソルを移動
  3. マウス左ボタンを離す

という一連の動作において、修正前と修正後の挙動の差異を簡易的な時系列として以下の表にまとめます。

修正前

イベント種別 button の値 動作
PointDownEvent 0 マウス左ボタン押下
PointMoveEvent 0 カーソル移動
PointMoveEvent 0 カーソル移動
... .. ...
PointMoveEvent 0 カーソル移動
PointUpEvent 0 マウス左ボタン離す

修正後

イベント種別 button の値 動作
PointDownEvent 0 マウス左ボタン押下
PointMoveEvent -1 カーソル移動
PointMoveEvent -1 カーソル移動
... .. ...
PointMoveEvent -1 カーソル移動
PointUpEvent 0 マウス左ボタン離す

PointerEventHandler との挙動の違い

中身を展開

また、 PointerEventHandlerMouseTouchEventHandler でそれぞれの挙動を比較しています。

  1. マウス左ボタンを押下
  2. カーソルを移動
  3. マウス右ボタンを押下
  4. マウス左ボタンを離す
  5. カーソルを移動
  6. マウス右ボタンを離す

という一連の動作について、それぞれの挙動の差異は以下の表のようになります。

PointerEventHandler

イベント種別 button の値 動作
PointDownEvent 0 マウス左ボタン押下
PointMoveEvent -1 カーソル移動
PointMoveEvent -1 カーソル移動
... .. ...
PointMoveEvent -1 カーソル移動
PointMoveEvent 2 マウス右ボタン押下
PointMoveEvent 0 マウス左ボタン離す
PointMoveEvent -1 カーソル移動
... .. ...
PointMoveEvent -1 カーソル移動
PointUpEvent 2 マウス右ボタン離す

MouseTouchEventHandler

イベント種別 button の値 動作
PointDownEvent 0 マウス左ボタン押下
PointMoveEvent -1 カーソル移動
PointMoveEvent -1 カーソル移動
... .. ...
PointMoveEvent -1 カーソル移動
PointUpEvent 0 マウス右ボタン押下 (この時点で PointEvent 一連の動作が中断)

MouseTouchEventHandler の場合、マウスカーソルのドラッグ中に別のボタンを押下した際に一連の PointEvent の動作が中断されます。
これは MouseTouchEventHandler が内部的には (マイウスデバイスの場合) mousedown, mousemove, mouseup イベントをハンドラしているために生じています。

ただし MouseTouchEventHandlerPointerEvent が利用できない環境でのフォールバック機構であり、多くのケース (環境) では PointerEventHandler が利用されます。

したがって本 PullRequest ではこの挙動については特に修正をしていません。

@yu-ogi yu-ogi requested review from dera- and xnv October 19, 2023 03:39
@yu-ogi yu-ogi merged commit 5fcb3fb into main Oct 23, 2023
8 checks passed
@yu-ogi yu-ogi deleted the support-button-in-mouse branch October 23, 2023 04:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants