2.3 KiB
2.3 KiB
TUI: マウスホイールでヒストリーをスクロール
背景
TUIのヒストリービューはキー操作(Shift+↑/↓、PageUp/PageDown、Ctrl+Home/End、Ctrl+[/])でスクロールできる。スクロール状態(Scroll 構造体・follow_tail・top_offset)も既に揃っており、ロジック的には外部から scroll_up/scroll_down を叩けば任意の手段でスクロール可能になっている。
一方で、現状のイベントループは TermEvent::Key / Paste / Resize のみを処理しており、マウスイベントは破棄される。crossterm のマウスキャプチャも有効化されていないため、ターミナル側にホイール入力すら届かない。
エディタ的に常駐するTUIとして、マウスホイールで直感的にヒストリーを遡れる体験を提供したい。
要件
- フルスクリーンモード中にマウスホイールでヒストリービューをスクロールできる。
- ホイール上方向で過去方向(
scroll_up)、下方向で末尾方向(scroll_down)に動く。1 notch あたりの行数は既存のキー操作(Shift+↑/↓)と同じ感覚で良い。 - マウスキャプチャの有効化はalt-screenに入っているあいだに限定し、終了時に確実に解除する(picker / spawn のインラインフェーズはネイティブのマウス挙動を保つ)。
- クリック・ドラッグ等のホイール以外のマウスイベントは現状無視で構わないが、最低限イベントループでマッチ漏れによるエラーが出ない形にする。
完了条件
- フルスクリーンTUIでマウスホイールを回すと、ヒストリービューが上下に動く。
- TUIを正常終了・異常終了どちらでも、ターミナルのマウスキャプチャ状態が残らない。
- 既存のキー操作によるスクロール挙動に変化がない。
範囲外
- ホイール以外のマウス操作(クリックでフォーカス移動、ドラッグ選択、スクロールバー表示など)
- picker / spawn のインラインフェーズでのマウス対応
- ホイール感度の設定可能化
Review
- 状態: Approve
- レビュー詳細: ./tui-mouse-scroll.review.md
- 日付: 2026-05-01