34 lines
2.3 KiB
Markdown
34 lines
2.3 KiB
Markdown
# 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](./tui-mouse-scroll.review.md)
|
||
- 日付: 2026-05-01
|