Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

[216_9]标签栏体验优化#3138

Merged
Yuki-Nagori merged 4 commits intomainMoganLab/mogan:mainfrom
yuki/216_9/tabpageMoganLab/mogan:yuki/216_9/tabpageCopy head branch name to clipboard
Apr 14, 2026
Merged

[216_9]标签栏体验优化#3138
Yuki-Nagori merged 4 commits intomainMoganLab/mogan:mainfrom
yuki/216_9/tabpageMoganLab/mogan:yuki/216_9/tabpageCopy head branch name to clipboard

Conversation

@Yuki-Nagori
Copy link
Copy Markdown
Contributor

No description provided.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 14, 2026

Greptile Summary

此 PR 解决了两个独立问题:一是将 QTMTabPage.cpp 中的标签页宽度常量改为基于 96 DPI 的基准值并通过 DpiUtils::scaled() 在运行时计算,使高 DPI 屏幕下的标签宽度能正确缩放;二是在 kill_tabpage() 中补充非当前标签关闭后的强制刷新逻辑(suspend → resume),消除标签栏延迟更新的视觉残留问题。前两轮已指出的两个问题(最小宽度未 DPI 缩放、三次 resume/suspend 冗余调用)均已在本版本中修复。

Confidence Score: 5/5

  • 此 PR 可以安全合并,两轮迭代中指出的问题均已修复。
  • 前两轮审查中发现的 P2 问题(最小宽度未 DPI 缩放、三次 resume/suspend 调用冗余)均已在本版本中正确处理。当前代码逻辑清晰,win_tabpage 使用安全,get_current_view_safe() 调用在 delete_view 之后无悬空指针风险,不存在遗留的 P0/P1 问题。
  • 无需特别关注的文件。

Important Files Changed

Filename Overview
src/Plugins/Qt/QTMTabPage.cpp 将标签页宽度常量替换为 DPI 基准值并添加缩放函数;最小宽度下限现在正确地经过 DPI 缩放(修复了前一轮的 P2 问题);最大宽度基准从 200px 降至 150px(96 DPI),属于有意为之的变更。
src/Texmacs/Data/new_view.cpp kill_tabpage() 末尾添加非当前标签关闭时对当前编辑器执行 suspend -> resume 的刷新逻辑;get_current_view_safe() 调用在 delete_view 之后是安全的(被删除的是非当前视图),win_tabpage 为局部变量拷贝且未被 kill_window 释放。
devel/216_9.md 新增开发说明文档,清晰描述了改动动机、实现方式和测试步骤。

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[kill_tabpage 被调用] --> B{win_tabpage == NULL?}
    B -- 是 --> Z[直接返回]
    B -- 否 --> C[记录 is_current 和 refresh_tabbar_for_non_current]
    C --> D{is_current?}
    D -- 是 --> E[detach 当前视图\ned->suspend\n清空 scrollable]
    D -- 否 --> F[跳过 detach]
    E --> G{找到同窗口的\n其他视图?}
    F --> H[跳过 attach]
    G -- 是 --> I[window_set_view 附着新视图]
    G -- 否 --> J[kill_window 关闭窗口]
    I --> K[delete_view / 释放 buffer]
    H --> K
    J --> K
    K --> L{refresh_tabbar_for_non_current?}
    L -- 否 --> Z2[结束]
    L -- 是 --> M[get_current_view_safe]
    M --> N{current_vw != NULL\n且 win_tabpage 匹配?}
    N -- 否 --> Z2
    N -- 是 --> O[current_ed->suspend]
    O --> P[current_ed->resume\n强制触发 Tab Bar 刷新]
    P --> Z2[结束]
Loading

Reviews (3): Last reviewed commit: "wip" | Re-trigger Greptile

Comment thread src/Texmacs/Data/new_view.cpp
Comment thread src/Plugins/Qt/QTMTabPage.cpp Outdated
Copy link
Copy Markdown
Contributor

@MoonL79 MoonL79 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Yuki-Nagori Yuki-Nagori merged commit 741377b into main Apr 14, 2026
5 checks passed
@Yuki-Nagori Yuki-Nagori deleted the yuki/216_9/tabpage branch April 14, 2026 08:07
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.

2 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.