Repository navigation
feat(qt): wire real history scrollbar to source reading anchor - #326
Merged
JavaZeroo merged 9 commits intoNov 7, 2026
Merged
Conversation
Add a vertical Qt scrollbar to the main screen. Its value is only the current display page top; navigation goes through HistoryViewport's rank/identity anchor, including new output while reading, bottom-follow, eviction clamping, resize and Find reveal. The scrollbar extent enters the existing Qt->core->ConPTY grid width path when visible; no second resize/store model is added. Extend the formal history regression with real mouse drag/page and scrollbar key events, exact source top/page identity, new-output anchor stability, narrow/restore, Find synchronization and two-session isolation. Fixed-layout legacy tests explicitly disable the scrollbar reservation in their own process so their pre-existing 80x24 fixtures remain unchanged; the scrollbar-enabled product path is covered by the history test.
5 tasks
…rage Add a scrollbar-enabled size test: default no history (no scrollbar), finite real-child history (scrollbar appears and reserves width), narrow/restore, and ED3 clear (scrollbar disappears). Each stage independently queries the real child GetConsoleScreenBufferInfo and compares Qt grid, core requested/transport and child buffer/window, with the Session child identity. Extend the enabled history test with the real Ctrl+Shift+F/query/Escape entry, public mouse drag + Ctrl+Shift+C through an injected writer (source text, not real CF), and a third recording child for correct post-Find input delivery. Wire the new test into CMake/CI; fixed-layout tests still disable only the scrollbar reservation in their own process.
…e settles Do not treat a single early child reply or a stale size as final; query the same real child repeatedly until its buffer/window, Qt grid and core transport agree, while still failing on timeout. This removes a hosted-run timing mismatch.
Open
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
背景
#29 主线已有
HistoryViewport、显示投影、源阅读锚点、滚轮、选择/Copy 与 Find。本切片把既有 Win32 滚动条历史浏览策略迁移到正式 Qt 正常主屏,使用真实QScrollBar公共入口,不依赖未合并 Paste。内容
HistoryViewport的源 rank/行身份锚点。验证
qt_history_navigation增加真实鼠标拖动、页区点击、滚动条 Home/End、精确源 top/page 身份、新输出锚点、缩窄/恢复、Find 同步、双会话隔离。history-scrollbar.png。固定布局的旧测试在自身进程显式关闭滚动条保留宽度,以维持既有 80×24 夹具;默认启用路径由历史测试及 qt_scrollbar_size 覆盖。边界
最终补充验收
当前 head e9db6db 的10项CI成功,Qt run42337771647/job128298480653 的11项正式路径测试通过。五阶段观测保留期望/实际尺寸、child PID和nonce;该CI在清空后先收到80×24旧尺寸,再收到81×24正确尺寸,两个回报均保留,未将transport完成当child ACK。本地PID10108与CI PID8732是独立运行,不混同。公开Find、拖选/Copy注入writer与正确child输入已验证;注入writer不代表真实CF。
Windows总回归run42337771663首次text_actions在stage84失败(actions geometry lost terminal selection),attempt2成功;保留失败与一次恢复记录,根因未独立确认,不宣称缺陷已修复。