我让AI总结的
问题描述
插件在后台运行时(正常 Esc 隐藏,未结束进程),用与上次进入相同的指令再次进入,插件窗口只是被前置聚焦,onPluginEnter 回调不会触发。
复现步骤
(以开发百宝箱插件为例,其他多标签插件同理):
- 在搜索框输入指令「json工具」进入插件
- 在插件内再打开另一个工具标签页(如 URL 编解码),此时停留在 URL 页
- 按 Esc 退出插件(插件隐藏到后台)
- 再次在搜索框输入「json工具」进入,或通过绑定该指令的快捷键进入
- 实际表现:插件窗口前置,但停留在上次的 URL 页,没有切换到指令对应的 JSON 工具页。
期望表现
重新进入时触发 onPluginEnter,由插件自行决定切换/激活对应页面。
推测原因
主进程对「再次进入」有一个跳过逻辑:上次进入是 text 类型指令、本次进入也是 text 类型且 featureCode 相同时,只聚焦窗口、不再派发 onPluginEnter,且该记录在插件正常隐藏到后台时不清除。
推测其本意是避免「Esc 回到搜索框后搜索词还在,重复回车导致 enter 重复执行」这类场景。但目前的判断似乎没有考虑两点:
记录里没有比较 payload,导致同 feature 但搜索词不同(如上次输入 json、这次输入 json格式化)的重进也会被跳过,而 payload 不同通常意味着一次新的触发意图;
对多标签类插件来说,「同指令重复进入」恰恰需要收到 enter 事件才能激活对应页面。
问题描述
插件在后台运行时(正常 Esc 隐藏,未结束进程),用与上次进入相同的指令再次进入,插件窗口只是被前置聚焦,onPluginEnter 回调不会触发。
复现步骤
(以开发百宝箱插件为例,其他多标签插件同理):
期望表现
重新进入时触发 onPluginEnter,由插件自行决定切换/激活对应页面。
推测原因
主进程对「再次进入」有一个跳过逻辑:上次进入是 text 类型指令、本次进入也是 text 类型且 featureCode 相同时,只聚焦窗口、不再派发 onPluginEnter,且该记录在插件正常隐藏到后台时不清除。
推测其本意是避免「Esc 回到搜索框后搜索词还在,重复回车导致 enter 重复执行」这类场景。但目前的判断似乎没有考虑两点:
记录里没有比较 payload,导致同 feature 但搜索词不同(如上次输入 json、这次输入 json格式化)的重进也会被跳过,而 payload 不同通常意味着一次新的触发意图;
对多标签类插件来说,「同指令重复进入」恰恰需要收到 enter 事件才能激活对应页面。