fix(input): keys and mouse buttons stay held after alt-tab or a release outside the container
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 84/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- typescript
調査の方向性
modules/input/src/keyboard-mouse/input-handler.tsの47〜54行目付近と、modules/input/test/keyboard-mouse/input.library.spec.tsの171〜181行目付近にある回帰テストを読みます。destroyでハンドラーがどのように登録・削除されるかを確認し、input libraryのテストを実行します。完了条件は、コンテナーとウィンドウそれぞれのモックで、フォーカス喪失、表示状態の変更、コンテナー外でのマウスボタン解放時にキーとマウスの状態がリセットされることを検証できることです。
索引モデルが issue の本文から書いたものです。
説明
Which package is this bug report for?
input
Issue description
visibilitychange only fires on document, and blur does not bubble to a non-focusable div, so the reset handlers registered on the container never run. Holding W and alt-tabbing leaves KeyW true. A mouseup outside the container leaves the drag and the button state set. The unit test passes only because its mock container is the window mock (input.library.spec.ts:49-52).
Where:
modules/input/src/keyboard-mouse/input-handler.ts:47-54modules/input/test/keyboard-mouse/input.library.spec.ts:171-181
Evidence:
container.addEventListener("mouseup", this.onMouseUp);
container.addEventListener("blur", this.onBlur);
container.addEventListener("visibilitychange", this.onVisibilityChange);
Suggested fix: Listen for blur and mouseup on window and for visibilitychange on container.ownerDocument, and remove them in destroy. Give the test a container mock that is not the window.
Found during a code audit of main at be72076.
Code sample
No response
Versions
- Engine
mainat be72076 - pnpm 12.0.0, Node.js 26, Bun 1.3.14
Issue priority
High (immediate attention needed)
I have tested this issue on a development release
be72076
- 主要言語
- TypeScript
- スター
- 7
- フォーク
- 2
- 平均マージ
- 1日 17時間
- マージ済み PR(30日)
- 17
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
NanoForge-dev/Engine のほかの issue
-
dependencies enhancement good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
NanoForge-dev/Engine#513 ·
メンテナーはふだん 1 日以内に返信
-
bug chore tests
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
NanoForge-dev/Engine#511 ·
メンテナーはふだん 1 日以内に返信
-
docs(network): TSDoc says ICE_SERVERS defaults to an empty list, the code uses public STUN serversオープンdocumentation good first issue modules:network
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
NanoForge-dev/Engine#509 ·
メンテナーはふだん 1 日以内に返信
-
documentation modules:ecs packages:asset packages:core
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
NanoForge-dev/Engine#508 ·
メンテナーはふだん 1 日以内に返信
-
bug good first issue modules:music modules:sound
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
NanoForge-dev/Engine#505 ·
メンテナーはふだん 1 日以内に返信
NanoForge-dev/Engine の issue をすべて見る
似ている issue
-
Mend: dependency security vulnerability
難易度 1/5 1〜3時間 初心者へのやさしさ 65/100
fdm-monster/fdm-monster#5563 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
be-BOP-io-SA/be-BOP#2849 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 79/100
メンテナーはふだん 1 日以内に返信
-
1️⃣ phase/under-investigation flaky/confirmed flaky/needs-decision type/bug
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
growilabs/growi#12246 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
🐛 The Rulekeeper - An index run that gives up on the lock ends Succeeded対応中かも @github-actions が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
SSWConsulting/SSW.Rules#2809 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信