Skip to content

feat(tui): 输入区多行时鼠标滚轮可上下移动光标#193

Open
lordquest wants to merge 1 commit into
itmisx:mainfrom
lordquest:feat/input-wheel-scroll
Open

feat(tui): 输入区多行时鼠标滚轮可上下移动光标#193
lordquest wants to merge 1 commit into
itmisx:mainfrom
lordquest:feat/input-wheel-scroll

Conversation

@lordquest

Copy link
Copy Markdown
Contributor

问题

输入框内容(多行)时,鼠标滚轮在输入区里会滚动历史对话区,而非滚动输入框自身。

原因:旧实现里 MouseWheelMsg 不判断鼠标所在区域,永远把滚轮透传给 chat 视口
chatViewport.Update)。而输入框用 bubbletea 的 textarea 实现,其滚动由光标驱动
(视口强制跟随光标),所以即便滚轮到了输入区,也只滚了背后的历史、输入内容纹丝不动。

修复

MouseWheelMsg 按鼠标所在区域分流:

  • 输入区(分隔线以下,Y > vpH):滚轮改为发 KeyPressMsg(上/下)
    驱动 textarea 光标上下移动,由视口跟随光标实现输入区内容的上下翻看。
    这样粘贴长文本后也能滚到开头。
  • 历史区Y <= vpH):行为不变,仍把滚轮透传给 chat 视口滚动对话。

验证

新增回归测试(tui/input_wheel_test.go):

  • TestInputWheelScrollsCursor — 输入区滚轮下→光标下移、滚轮上→移回顶端
  • TestWheelInHistoryAreaScrollsChat — 历史区滚轮不移动输入光标(行为不变)

go test ./tui/ 全部通过。

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.

1 participant