Repository navigation
格子右键全链对齐原生:新建子菜单动态同源+列表命中区+双键圈选 - #563
Closed
Tianyu199509 wants to merge 1 commit into
Closed
Tianyu199509 wants to merge 1 commit into
Tianyu199509 wants to merge 1 commit into
Conversation
新建子菜单与资源管理器完全同源:三注册布局枚举(直挂 / .ext\ProgId 嵌套(Office) / ProgId 键,每扩展名首个可用形状赢,VMware 空值键与 Command-only 正确跳过且不遮蔽后来者);命名链=MenuText(间接串解析+剥加速键)→ProgId FriendlyTypeName→ProgId default(SHGFI TypeName 被 UserChoice 带偏禁用,.md "WorkBuddy Document" vs "MD 文件" 实证);排序按扩展名而非显示名(docx<md<…<zip 与原生逐项吻合);ItemName 即新建文件现成基名(新建 ZIP 带 Data 空档头合法可开);每行类型图标走 SHGFI_ICON|USEFILEATTRIBUTES→HICON→IconHelper 现成 PNG 管线,右键时后台预取不卡菜单(ICONLOCATION+USEFILEATTRIBUTES 主流机器大面积空定位,证伪弃用);快捷方式项=rundll32 appwiz 向导在 26xxx 已死(实测立即退出),改 AOT 安全 vtable 建无目标占位 lnk(IPersistFile::Save 槽6)+SHObjectProperties 属性表补目标;近版 Windows 无 .txt ShellNew 注册,以 SHGFI TypeName 兜底播种(顺带修 Win10 txtfile\ShellNew ProgID 布局盲区,老代码只扫直挂布局)。 列表模式右键命中区对齐 Explorer:仅「图标+名称」块(4px 外扩)弹文件菜单,行内其余右键=空白菜单+清选择(与真空白完全同一路径),「查看→图标」从行内随时可达;左右键跑马圈选均可从行内空白起手(DragStarting 待定取消防文件拖拽抢手势,过阈值后指针捕获自防;行内空白左键单击仍由视图内建点击选择回选该行);右键圈选松开就地弹作用于圈选结果的菜单(单选文件菜单/多选菜单/圈空空白菜单),一次性 suppress 吞可能的重复 RightTapped。 根因修复:FindItemElement(DataContext 走查)返回最内层命中元素致 is FileItemSurface 恒假=命中区分流与圈选起手全部死代码(构建含符号但路径不可达,两轮误判后 Simon 实测"都没生效"钉死),新增 FindItemSurface 类型祖先链(同 IsWithinItemSurface 的 Tag 走法先例),契约钉 DoesNotContain 永禁 DC 走查结果做类型判定;顺修 FileItemSelectionGeometryContractTests 嵌套 Fact 正规化(xUnit 实际会运行嵌套 local function 测试)与弹窗菜单定位钉锚随抽取更新(行为未变)。
Owner
Author
|
工作区内容经 #565 汇聚合并落地(逐文件一致),本 PR 关闭。 |
pattoneirc
pushed a commit
to pattoneirc/DeskBox
that referenced
this pull request
Oct 24, 2026
…批(归因体系+弹窗变体+toast 兜底+ack schema15+SearchPopup 守卫+13 语言全键:ElevationNoticeWindow/App.xaml.cs/SearchPopupWindow/13 Strings json+FullyElevatedSessionAttributionTests);PowerToys Peek 空格预览批 A(PowerToysPeekPreviewService+SpacePreviewBroker 仲裁+换线点 WidgetManager.QuickLook 等+21 测试);托盘图标「隐藏」样式批(五值 TrayIconStyle+启动跳建+运行时移除恢复+TaskbarCreated 复活压制+lifeline 隐藏分支:App.Tray/App.Startup);设置门面批(门面棘轮清单扩容 App.xaml.cs 35→36——解 Tianyu199509#564 CI 红因(更新器批 2492c51 新增门面读而清单扩容滞留工作区)+SettingsService 家族+12 契约测试重钉);原生菜单批工作区内容与 PR Tianyu199509#563 分支逐文件一致(汇聚合并,先后任序皆无冲突:新建子菜单同源/列表命中区/双键圈选+CHANGELOG/v1.5.9.md 未覆盖部分(原生菜单文案扩写+重打包登记));更新器六批 2492c51 经本 PR 一并带入远端(本地 release/1.5.9 原领先 origin 1 提交);Win32Helper/IconHelper/Shell* 系为各批交叉改动
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.
内容
格子右键交互全链对齐 Windows 原生(列表模式为主战场),三个子项:
1. 新建子菜单与资源管理器完全同源
HKCR\.ext\ShellNew、.ext\ProgId\ShellNew(Office 家族所在)、ProgId\ShellNew(Win10 文本文档所在);每扩展名取首个可用形状,VMware 式空值键与 Command-only(联系人)正确跳过且不遮蔽后来者。MenuText(@dll,-id间接串解析+剥(&S))→ ProgIDFriendlyTypeName→ ProgID 默认值。刻意不用 SHGetFileInfo 类型名——它跟 UserChoice 走(.md 实证:原生"WorkBuddy Document" vs SHGFI"MD 文件")。ItemName即新建文件现成基名("新建压缩(zipped)文件夹"),新建 ZIP 带 Data 空档头合法可开。SHGFI_ICON|USEFILEATTRIBUTES→HICON→IconHelper 现成 PNG 管线,右键时后台预取(ICONLOCATION 路线主流机器大面积空定位,证伪弃用)。IPersistFile::Save槽 6)+SHObjectProperties属性表补目标(隔离契约判定:lnkfile 属性页=shell32 内建,三方全在 ContextMenuHandlers,见 Win32Helper 注释)。txtfile\ShellNewProgID 布局盲区。2. 列表模式右键命中区
仅「图标+名称」块(4px 外扩)弹文件菜单;行内其余右键=空白菜单+清选择(与真空白完全同一路径),「查看→图标」从行内随时可达。图标模式零影响。
3. 双键跑马圈选
左右键均可从行内空白起手(
DragStarting待定取消防文件拖拽抢手势,过阈值后指针捕获自防;行内空白左键单击仍由视图内建点击选择回选该行)。右键圈选松开就地弹作用于圈选结果的菜单(圈空弹空白菜单),一次性 suppress 防双弹。根因修复(现场事故沉淀)
初版三路径全部死代码:
FindItemElement(DataContext 走查)返回最内层命中元素,is FileItemSurface恒假。新增FindItemSurface类型祖先链,契约钉DoesNotContain永禁 DC 走查结果做类型判定。验证
备注
docs/releases/v1.5.9.md的哈希回填(3275a818 时代构建)刻意未随本 PR——安装包已落后于 name-expand 合并,留给发版重打包日刷新。