Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
14b384f2
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,发现更多精彩内容 >>
提交
14b384f2
编写于
6月 14, 2019
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
💄
suggest widget dispose
上级
8c4a49f8
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
22 addition
and
41 deletion
+22
-41
src/vs/editor/contrib/suggest/suggestWidget.ts
src/vs/editor/contrib/suggest/suggestWidget.ts
+22
-41
未找到文件。
src/vs/editor/contrib/suggest/suggestWidget.ts
浏览文件 @
14b384f2
...
...
@@ -9,7 +9,7 @@ import { createMatches } from 'vs/base/common/filters';
import
*
as
strings
from
'
vs/base/common/strings
'
;
import
{
Event
,
Emitter
}
from
'
vs/base/common/event
'
;
import
{
onUnexpectedError
}
from
'
vs/base/common/errors
'
;
import
{
IDisposable
,
dispose
,
toDisposable
,
DisposableStore
}
from
'
vs/base/common/lifecycle
'
;
import
{
IDisposable
,
dispose
,
toDisposable
,
DisposableStore
,
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
addClass
,
append
,
$
,
hide
,
removeClass
,
show
,
toggleClass
,
getDomNodePagePosition
,
hasClass
,
addDisposableListener
}
from
'
vs/base/browser/dom
'
;
import
{
IListVirtualDelegate
,
IListEvent
,
IListRenderer
,
IListMouseEvent
}
from
'
vs/base/browser/ui/list/list
'
;
import
{
List
}
from
'
vs/base/browser/ui/list/listWidget
'
;
...
...
@@ -29,7 +29,7 @@ import { IStorageService, StorageScope } from 'vs/platform/storage/common/storag
import
{
MarkdownRenderer
}
from
'
vs/editor/contrib/markdown/markdownRenderer
'
;
import
{
IModeService
}
from
'
vs/editor/common/services/modeService
'
;
import
{
IOpenerService
}
from
'
vs/platform/opener/common/opener
'
;
import
{
TimeoutTimer
,
CancelablePromise
,
createCancelablePromise
}
from
'
vs/base/common/async
'
;
import
{
TimeoutTimer
,
CancelablePromise
,
createCancelablePromise
,
disposableTimeout
}
from
'
vs/base/common/async
'
;
import
{
CompletionItemKind
,
completionKindToCssClass
}
from
'
vs/editor/common/modes
'
;
import
{
IconLabel
,
IIconLabelValueOptions
}
from
'
vs/base/browser/ui/iconLabel/iconLabel
'
;
import
{
getIconClasses
}
from
'
vs/editor/common/services/getIconClasses
'
;
...
...
@@ -405,7 +405,7 @@ export class SuggestWidget implements IContentWidget, IListVirtualDelegate<Compl
private
state
:
State
|
null
;
private
isAuto
:
boolean
;
private
loadingTimeout
:
any
;
private
loadingTimeout
:
IDisposable
=
Disposable
.
None
;
private
currentSuggestionDetails
:
CancelablePromise
<
void
>
|
null
;
private
focusedItem
:
CompletionItem
|
null
;
private
ignoreFocusEvents
=
false
;
...
...
@@ -423,7 +423,7 @@ export class SuggestWidget implements IContentWidget, IListVirtualDelegate<Compl
private
readonly
editorBlurTimeout
=
new
TimeoutTimer
();
private
readonly
showTimeout
=
new
TimeoutTimer
();
private
readonly
toDispose
:
IDisposable
[]
=
[]
;
private
readonly
toDispose
=
new
DisposableStore
()
;
private
onDidSelectEmitter
=
new
Emitter
<
ISelectedSuggestion
>
();
private
onDidFocusEmitter
=
new
Emitter
<
ISelectedSuggestion
>
();
...
...
@@ -466,7 +466,7 @@ export class SuggestWidget implements IContentWidget, IListVirtualDelegate<Compl
this
.
storageService
=
storageService
;
this
.
element
=
$
(
'
.editor-widget.suggest-widget
'
);
this
.
toDispose
.
push
(
addDisposableListener
(
this
.
element
,
'
click
'
,
e
=>
{
this
.
toDispose
.
add
(
addDisposableListener
(
this
.
element
,
'
click
'
,
e
=>
{
if
(
e
.
target
===
this
.
element
)
{
this
.
hideWidget
();
}
...
...
@@ -487,19 +487,18 @@ export class SuggestWidget implements IContentWidget, IListVirtualDelegate<Compl
mouseSupport
:
false
});
this
.
toDispose
.
push
(
attachListStyler
(
this
.
list
,
themeService
,
{
listInactiveFocusBackground
:
editorSuggestWidgetSelectedBackground
,
listInactiveFocusOutline
:
activeContrastBorder
}),
themeService
.
onThemeChange
(
t
=>
this
.
onThemeChange
(
t
)),
editor
.
onDidLayoutChange
(()
=>
this
.
onEditorLayoutChange
()),
this
.
list
.
onMouseDown
(
e
=>
this
.
onListMouseDown
(
e
)),
this
.
list
.
onSelectionChange
(
e
=>
this
.
onListSelection
(
e
)),
this
.
list
.
onFocusChange
(
e
=>
this
.
onListFocus
(
e
)),
this
.
editor
.
onDidChangeCursorSelection
(()
=>
this
.
onCursorSelectionChanged
()),
this
.
editor
.
onDidChangeConfiguration
(
e
=>
e
.
contribInfo
&&
applyIconStyle
())
);
this
.
toDispose
.
add
(
attachListStyler
(
this
.
list
,
themeService
,
{
listInactiveFocusBackground
:
editorSuggestWidgetSelectedBackground
,
listInactiveFocusOutline
:
activeContrastBorder
}));
this
.
toDispose
.
add
(
themeService
.
onThemeChange
(
t
=>
this
.
onThemeChange
(
t
)));
this
.
toDispose
.
add
(
editor
.
onDidLayoutChange
(()
=>
this
.
onEditorLayoutChange
()));
this
.
toDispose
.
add
(
this
.
list
.
onMouseDown
(
e
=>
this
.
onListMouseDown
(
e
)));
this
.
toDispose
.
add
(
this
.
list
.
onSelectionChange
(
e
=>
this
.
onListSelection
(
e
)));
this
.
toDispose
.
add
(
this
.
list
.
onFocusChange
(
e
=>
this
.
onListFocus
(
e
)));
this
.
toDispose
.
add
(
this
.
editor
.
onDidChangeCursorSelection
(()
=>
this
.
onCursorSelectionChanged
()));
this
.
toDispose
.
add
(
this
.
editor
.
onDidChangeConfiguration
(
e
=>
e
.
contribInfo
&&
applyIconStyle
()));
this
.
suggestWidgetVisible
=
SuggestContext
.
Visible
.
bindTo
(
contextKeyService
);
this
.
suggestWidgetMultipleSuggestions
=
SuggestContext
.
MultipleSuggestions
.
bindTo
(
contextKeyService
);
...
...
@@ -725,10 +724,7 @@ export class SuggestWidget implements IContentWidget, IListVirtualDelegate<Compl
this
.
isAuto
=
!!
auto
;
if
(
!
this
.
isAuto
)
{
this
.
loadingTimeout
=
setTimeout
(()
=>
{
this
.
loadingTimeout
=
null
;
this
.
setState
(
State
.
Loading
);
},
delay
);
this
.
loadingTimeout
=
disposableTimeout
(()
=>
this
.
setState
(
State
.
Loading
),
delay
);
}
}
...
...
@@ -736,10 +732,7 @@ export class SuggestWidget implements IContentWidget, IListVirtualDelegate<Compl
this
.
preferDocPositionTop
=
false
;
this
.
docsPositionPreviousWidgetY
=
null
;
if
(
this
.
loadingTimeout
)
{
clearTimeout
(
this
.
loadingTimeout
);
this
.
loadingTimeout
=
null
;
}
this
.
loadingTimeout
.
dispose
();
if
(
this
.
currentSuggestionDetails
)
{
this
.
currentSuggestionDetails
.
cancel
();
...
...
@@ -1005,7 +998,7 @@ export class SuggestWidget implements IContentWidget, IListVirtualDelegate<Compl
}
hideWidget
():
void
{
clearTimeout
(
this
.
loadingTimeout
);
this
.
loadingTimeout
.
dispose
(
);
this
.
setState
(
State
.
Hidden
);
this
.
onDidHideEmitter
.
fire
(
this
);
}
...
...
@@ -1149,22 +1142,10 @@ export class SuggestWidget implements IContentWidget, IListVirtualDelegate<Compl
}
dispose
():
void
{
this
.
state
=
null
;
this
.
currentSuggestionDetails
=
null
;
this
.
focusedItem
=
null
;
this
.
element
=
null
!
;
// StrictNullOverride: nulling out ok in dispose
this
.
messageElement
=
null
!
;
// StrictNullOverride: nulling out ok in dispose
this
.
listElement
=
null
!
;
// StrictNullOverride: nulling out ok in dispose
this
.
details
.
dispose
();
this
.
details
=
null
!
;
// StrictNullOverride: nulling out ok in dispose
this
.
list
.
dispose
();
this
.
list
=
null
!
;
// StrictNullOverride: nulling out ok in dispose
dispose
(
this
.
toDispose
);
if
(
this
.
loadingTimeout
)
{
clearTimeout
(
this
.
loadingTimeout
);
this
.
loadingTimeout
=
null
;
}
this
.
toDispose
.
dispose
();
this
.
loadingTimeout
.
dispose
();
this
.
editorBlurTimeout
.
dispose
();
this
.
showTimeout
.
dispose
();
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录