Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
37975119
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
37975119
编写于
9月 19, 2018
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix #58888 and fix a little mem leak
上级
4e3f58f2
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
13 addition
and
6 deletion
+13
-6
src/vs/workbench/api/electron-browser/mainThreadDocumentsAndEditors.ts
...nch/api/electron-browser/mainThreadDocumentsAndEditors.ts
+13
-6
未找到文件。
src/vs/workbench/api/electron-browser/mainThreadDocumentsAndEditors.ts
浏览文件 @
37975119
...
...
@@ -6,7 +6,7 @@
import
{
IModelService
,
shouldSynchronizeModel
}
from
'
vs/editor/common/services/modelService
'
;
import
{
ITextModel
}
from
'
vs/editor/common/model
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
{
IDisposable
,
dispose
,
combinedDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
ICodeEditorService
}
from
'
vs/editor/browser/services/codeEditorService
'
;
import
{
Event
,
Emitter
}
from
'
vs/base/common/event
'
;
import
{
ExtHostContext
,
ExtHostDocumentsAndEditorsShape
,
IModelAddedData
,
ITextEditorAddData
,
IDocumentsAndEditorsDelta
,
IExtHostContext
,
MainContext
}
from
'
../node/extHost.protocol
'
;
...
...
@@ -173,7 +173,7 @@ class MainThreadDocumentAndEditorStateComputer {
@
IPanelService
private
readonly
_panelService
:
IPanelService
)
{
this
.
_modelService
.
onModelAdded
(
this
.
_updateStateOnModelAdd
,
this
,
this
.
_toDispose
);
this
.
_modelService
.
onModelRemoved
(
this
.
_updateState
,
this
,
this
.
_toDispose
);
this
.
_modelService
.
onModelRemoved
(
_
=>
this
.
_updateState
()
,
this
,
this
.
_toDispose
);
this
.
_codeEditorService
.
onCodeEditorAdd
(
this
.
_onDidAddEditor
,
this
,
this
.
_toDispose
);
this
.
_codeEditorService
.
onCodeEditorRemove
(
this
.
_onDidRemoveEditor
,
this
,
this
.
_toDispose
);
...
...
@@ -191,8 +191,11 @@ class MainThreadDocumentAndEditorStateComputer {
}
private
_onDidAddEditor
(
e
:
ICodeEditor
):
void
{
this
.
_toDisposeOnEditorRemove
.
set
(
e
.
getId
(),
e
.
onDidChangeModel
(()
=>
this
.
_updateState
()));
this
.
_toDisposeOnEditorRemove
.
set
(
e
.
getId
(),
e
.
onDidFocusEditorText
(()
=>
this
.
_updateState
()));
this
.
_toDisposeOnEditorRemove
.
set
(
e
.
getId
(),
combinedDisposable
([
e
.
onDidChangeModel
(()
=>
this
.
_updateState
()),
e
.
onDidFocusEditorText
(()
=>
this
.
_updateState
()),
e
.
onDidFocusEditorWidget
(()
=>
this
.
_updateState
(
e
))
]));
this
.
_updateState
();
}
...
...
@@ -231,7 +234,7 @@ class MainThreadDocumentAndEditorStateComputer {
));
}
private
_updateState
():
void
{
private
_updateState
(
widgetFocusCandidate
?:
ICodeEditor
):
void
{
// models: ignore too large models
const
models
=
new
Set
<
ITextModel
>
();
...
...
@@ -256,7 +259,11 @@ class MainThreadDocumentAndEditorStateComputer {
)
{
const
apiEditor
=
new
TextEditorSnapshot
(
editor
);
editors
.
set
(
apiEditor
.
id
,
apiEditor
);
if
(
editor
.
hasTextFocus
())
{
if
(
editor
.
hasTextFocus
()
||
(
widgetFocusCandidate
===
editor
&&
editor
.
hasWidgetFocus
()))
{
// text focus has priority, widget focus is tricky because multiple
// editors might claim widget focus at the same time. therefore we use a
// candidate (which is the editor that has raised an widget focus event)
// in addition to the widget focus check
activeEditor
=
apiEditor
.
id
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录