Skip to content

fix(plugin): 修复粘滞轮盘交互并增加运行时重启提示 - #170

Merged
ztzpro merged 1 commit into
mainfrom
fix
Sep 26, 2026
Merged

ztzpro merged 1 commit into
mainfrom
fix

Conversation

@ztzpro

@ztzpro ztzpro commented Sep 26, 2026

Copy link
Copy Markdown
Member

fix(plugin): 修复粘滞轮盘交互并增加运行时重启提示

变更摘要

本 PR 修复 FloatingBall 使用宿主粘滞轮盘时的交互问题,并改善插件旧程序集无法释放时的用户处理流程。

主要变更

  • 修复粘滞轮盘透明轮盘窗口可能拦截鼠标输入的问题:
    • 轮盘 HWND 在粘滞会话期间启用鼠标穿透;
    • 全屏遮罩统一负责鼠标移动和点击;
    • 会话结束后恢复原窗口样式。
  • 修复多屏和屏幕边缘场景下的命中偏移:
    • 使用 RadialWindow.ActualPhysicalCenter;
    • 按实际显示中心重新获取 DPI;
    • 命中测试不再继续使用原始请求中心。
  • 优化扇区高亮更新:
    • 连续鼠标事件只保留最新待显示状态;
    • 通过 DispatcherPriority.Render 提交一次待处理更新;
    • 避免每次鼠标移动都重复启动高亮动画。
  • 修复插件卸载引用残留:
    • 在 PluginInstance.Teardown() 之前清空 OwnedActions;
    • 避免宿主字段继续持有插件侧的 IActionContribution;
    • 降低 FloatingBall 及其他插件 ALC 无法回收的概率。
  • 增加旧运行时重启流程:
    • 插件停用或启用失败且检测到旧程序集未释放时弹出确认窗口;
    • 用户可以选择立即重启 StarPie;
    • 新增 App.Restart() 公共入口;
    • 重启会等待当前进程退出后启动同一路径的 StarPie;
    • 增加中英繁日文案。

- 让粘滞轮盘的透明窗口对鼠标穿透,由全屏遮罩统一接收悬停和点击
- 使用轮盘实际显示中心和对应 DPI 进行扇区命中计算,修复靠近屏幕边缘时的定位偏移
- 合并连续高亮更新,在 Render 优先级提交最新扇区状态,减少动画重复启动和 UI 跳变
- 在宿主卸载 ALC 前清空 OwnedActions,释放其中持有的插件 IActionContribution 引用
- 在插件停用或重新启用检测到旧程序集未释放时,弹出是否立即重启 StarPie 的确认窗口
- 增加 App.Restart() 公共重启入口,等待当前进程退出后启动新的 StarPie 实例
- 增加插件运行时重启状态查询和中英繁日文案
@ztzpro
ztzpro merged commit c90cfb5 into main Sep 26, 2026
1 check passed
@ztzpro
ztzpro deleted the fix branch September 26, 2026 03:21
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.

1 participant