Skip to content

修复悬浮窗触屏逻辑、添加主题设置并调整网络延迟自动检测策略#32

Merged
Programmer-MrWang merged 4 commits intomainfrom
codex/fix-hover-window-touch-logic-issues
Mar 14, 2026
Merged

修复悬浮窗触屏逻辑、添加主题设置并调整网络延迟自动检测策略#32
Programmer-MrWang merged 4 commits intomainfrom
codex/fix-hover-window-touch-logic-issues

Conversation

@Programmer-MrWang
Copy link
Owner

Motivation

  • 修正悬浮窗在触屏设备上的交互逻辑,确保在检测到触屏设备时使用触屏拖动/点按而非依赖运行时触摸事件才切换模式,并修复触屏无法拖动的问题。
  • 修改网络延迟检测组件的 Auto 行为:启动时优先 ICMP,若 ICMP 返回 0ms/超时/无网络则切换为 HTTP,并在本次运行中保持 HTTP(直到重启)。
  • 在悬浮窗编辑的外观设置中新增“主题”选项以支持“跟随ClassIsland/明亮/黑暗”。

Description

  • 悬浮窗服务(Services/FloatingWindowService.cs)改动:用 _isTouchDeviceDetected 代替原有即时触摸模式判定,新增 IsTouchCapableDevice()(基于 GetSystemMetrics(SM_MAXIMUMTOUCHES))在创建窗口时判定设备是否支持触摸,Pointer 事件中仅对 PointerType.Touch 做触屏拖动处理且必须从拖动柄触发,调整了 press/move/release 的判断以修复触屏拖动流程;新增主题解析 ResolveWindowThemeVariant() 并在渲染时按配置决定明暗色。
  • 配置(ConfigHandlers/MainConfigData.cs)改动:新增 FloatingWindowTheme 字段并持久化(0=跟随、1=明亮、2=黑暗)。
  • 设置界面(SettingsPage/FloatingWindowEditorSettingsPage.axaml / .axaml.cs)改动:在“外观设置”中新增“主题”下拉(带图标及三项),并将配置变更纳入触发刷新悬浮窗的属性列表。
  • 网络延迟组件(Controls/Components/NetworkStatusComponent.axaml.cs)改动:去掉原来 Auto 模式下的周期性 ICMP 重试逻辑,增加 _autoModeForceHttpUntilRestart 标志;Auto 模式启动优先尝试 ICMP,若 ICMP 失败(包含返回 0ms / 超时 / 无网络)则切换到 HTTP 并在本次进程中保持 HTTP;将 ICMP 中 reply.RoundtripTime <= 0 视作失败并返回特定错误文本 0ms 以触发切换。

Testing

  • 运行代码搜索/静态检查(多次使用 rg / sed 查看并验证改动点与调用链)以确认修改位置与引用,检查结果正常(命令成功且定位到期望文件/行)。
  • 尝试执行 dotnet build SystemTools.csproj 以进行编译验证,但当前执行环境缺少 dotnet 命令,构建失败;因此未能在本地完成编译/单元测试验证(失败)。
  • 已完成变更并提交到分支,可在具备 .NET 编译环境的 CI 上进行完整构建与运行时验证(建议在 Windows 环境下验证触摸检测与触屏拖动行为)。

Codex Task

@Programmer-MrWang Programmer-MrWang merged commit cf08a67 into main Mar 14, 2026
1 check passed
@Programmer-MrWang Programmer-MrWang deleted the codex/fix-hover-window-touch-logic-issues branch March 14, 2026 15:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant