vscode 辅助窗口终端搞乱了光标 Flink ,

ff29svar  于 5个月前  发布在  Vscode
关注(0)|答案(6)|浏览(53)

测试 #199023
可能是终端代码中的问题,或者与我们在 setTimeout / setInterval 周围尝试的一些技巧有关?

bxfogqkk

bxfogqkk1#

我们现在已经安排了setTimeout在每个打开的窗口上运行,但一旦第一个运行(甚至在触发回调之前),我们就会立即取消所有其他超时。如果定时器运行超过一次,我会感到惊讶。我们甚至有一个额外的实用方法来确保回调只运行一次:
vscode/src/vs/workbench/browser/window.ts
第68行到第71行的2e721b6
| | consthandlerFn=createSingleCallFunction(handler,()=>{ |
| | dispose(timeoutDisposables); |
| | BaseWindow.TIMEOUT_DISPOSABLES.delete(timeoutHandle); |
| | }); |

krcsximq

krcsximq2#

顺便说一下,我无法复现这个问题。

c3frrgcw

c3frrgcw3#

感谢您的提示,我会进行调查。

os8fio9y

os8fio9y4#

在终端领域,我注意到有很多 getActiveWindow 的使用。作为 #199568 的一部分,我已经将一些终端代码切换为使用 mainWindow ,特别是在 setTimeoutclearTimeout 同时使用的情况下。我认为在这些情况下路由到活动窗口是危险的,因为一个窗口上可能安装了一个计时器,然后尝试在另一个窗口上清除它,这是不起作用的。通过 mainWindow 可以确保一切都得到妥善处理和分发。
然而,我仍然发现有些一次性间隔被安排在活动窗口上,并想知道我们是否可以尝试选择正确的窗口来确定终端的位置。

tl;dr;:避免在可以基于正在构建的 DOM 节点推断正确上下文的情况下使用 getActiveWindowgetActiveDocument

svgewumm

svgewumm6#

刚刚看到它发生了,但不确定是否可以复现。

相关问题