Skip to content

fix(windows-tray): 左键显示独立状态浮层 - #60

Draft
mel0nyrame wants to merge 1 commit into
masterfrom
fix/windows-tray-popup-59
Draft

mel0nyrame wants to merge 1 commit into
masterfrom
fix/windows-tray-popup-59

Conversation

@mel0nyrame

@mel0nyrame mel0nyrame commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

Closes #59

背景

#59 的 Windows 实机结果表明,托盘左键仍打开完整“网络概况”窗口。#37 的托盘交互目标与 #40 的浮层实现要求左键显示贴近图标的简短状态,完整详情由明确操作打开。

变更轮廓

托盘左键的窗口归属改为:

- 同一个主 HWND 切换尺寸、样式和 compact 页面
+ 托盘事件打开独立工具窗口 → popupMain 渲染状态浮层
+ 主 HWND 始终承载完整详情;再次左键或浮层失焦时隐藏浮层

test/windows_tray_contract_test.dart 核对原生托盘事件、独立窗口入口、主窗口与浮层的接线;test/windows_status_popup_test.dart 核对状态区、简短信息行、按钮和小视口布局。原生 C++ 源码已通过 MinGW 语法检查。这些证据不代替 Windows Shell 实机点击验证。

认证状态及操作保持由主运行时拥有:

WindowsAuthRuntime 的状态 / Wi-Fi → WindowsTrayApp 投影展示快照
  → 原生浮层通道 → 独立 UI isolate
浮层“立即检查” / “详细信息” → 原生窗口 → WindowsTrayApp
  → 原有单实例认证入口 / 完整主窗口
右键菜单 → 原有打开、检查、设置、日志和退出命令

test/windows_status_popup_test.dart 核对状态投影不携带运行时自由文本或设备资料,并核对浮层命令回传;test/windows_tray_contract_test.dart 核对两侧通道、单实例认证调用链和右键菜单。浮层收到真实快照并完成首帧后才显示,避免展示默认状态;该顺序有通道/widget 测试和接线断言,仍待 Windows 实机确认。ADR-0012 记录了两个 UI engine、唯一认证运行时的所有权及取舍。

验证汇总

  • tool/flutter_sdk.sh flutter pub get:通过,使用仓库声明的 Flutter 3.47.5。
  • tool/flutter_sdk.sh dart format --output=none --set-exit-if-changed .:通过,76 个 Dart 文件无格式漂移。
  • tool/flutter_sdk.sh flutter analyze --no-fatal-infos:通过,无 error/warning;报告 96 条既有 info。
  • tool/flutter_sdk.sh flutter test --reporter compact:通过,210 项测试。
  • MinGW 对 flutter_window.cpp、tray_popup_window.cpp、win32_window.cpp 执行 C++17 语法检查:通过。
  • git diff --check:通过。
  • GitHub Actions CI run 36538415031 在该提交成功:Windows Release 构建、安装器生成及安装/重装/卸载冒烟检查均通过。当前开发主机为 Linux,尚未完成 Windows 10/11 通知区域真实点击、焦点与布局验收,也没有实机截图。

评审注意事项

Windows 验收安装包已发布为预发布版,SHA-256 与 CI 产物已核对。请在 Windows 10/11 x64 安装包上核对托盘左键、再次点击、失焦、右键菜单、详情窗口、未配置及在线等真实状态;覆盖托盘折叠区、多屏与高 DPI,并附左键浮层、右键菜单、详情窗口截图。完成这些检查前,#59 保持 open,本 PR 保持草稿且不合并。按照用户要求,本次未委派独立只读 reviewer;仓库交付文档要求的多调用链 PR 正文预审尚待完成。

风险与回滚

浮层首次打开会启动第二个仅用于 UI 的 Flutter engine,增加进程内存;认证协调器仍只有主运行时一份。Windows Shell 的焦点、位置和 DPI 行为需要上述实机证据。无需数据迁移;若出现回归,可回退提交 87c06e1。

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.

修正 Windows 托盘左键状态浮层并与完整窗口分离

1 participant