Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
c86667e5
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,发现更多精彩内容 >>
提交
c86667e5
编写于
2月 04, 2019
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
debt - avoid constant settings lookup in lists
上级
d7d55ee7
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
61 addition
and
14 deletion
+61
-14
src/vs/platform/list/browser/listService.ts
src/vs/platform/list/browser/listService.ts
+61
-14
未找到文件。
src/vs/platform/list/browser/listService.ts
浏览文件 @
c86667e5
...
...
@@ -128,12 +128,27 @@ function useSingleClickToOpen(configurationService: IConfigurationService): bool
return
configurationService
.
getValue
(
openModeSettingKey
)
!==
'
doubleClick
'
;
}
class
MultipleSelectionController
<
T
>
implements
IMultipleSelectionController
<
T
>
{
class
MultipleSelectionController
<
T
>
extends
Disposable
implements
IMultipleSelectionController
<
T
>
{
private
useAltAsMultipleSelectionModifier
:
boolean
;
constructor
(
private
configurationService
:
IConfigurationService
)
{
}
constructor
(
private
configurationService
:
IConfigurationService
)
{
super
();
this
.
useAltAsMultipleSelectionModifier
=
useAltAsMultipleSelectionModifier
(
configurationService
);
this
.
registerListeners
();
}
private
registerListeners
():
void
{
this
.
_register
(
this
.
configurationService
.
onDidChangeConfiguration
(
e
=>
{
if
(
e
.
affectsConfiguration
(
multiSelectModifierSettingKey
))
{
this
.
useAltAsMultipleSelectionModifier
=
useAltAsMultipleSelectionModifier
(
this
.
configurationService
);
}
}));
}
isSelectionSingleChangeEvent
(
event
:
IListMouseEvent
<
T
>
|
IListTouchEvent
<
T
>
):
boolean
{
if
(
useAltAsMultipleSelectionModifier
(
this
.
configurationService
)
)
{
if
(
this
.
useAltAsMultipleSelectionModifier
)
{
return
event
.
browserEvent
.
altKey
;
}
...
...
@@ -145,14 +160,29 @@ class MultipleSelectionController<T> implements IMultipleSelectionController<T>
}
}
class
WorkbenchOpenController
implements
IOpenController
{
class
WorkbenchOpenController
extends
Disposable
implements
IOpenController
{
private
openOnSingleClick
:
boolean
;
constructor
(
private
configurationService
:
IConfigurationService
,
private
existingOpenController
?:
IOpenController
)
{
super
();
this
.
openOnSingleClick
=
useSingleClickToOpen
(
configurationService
);
constructor
(
private
configurationService
:
IConfigurationService
,
private
existingOpenController
?:
IOpenController
)
{
}
this
.
registerListeners
();
}
private
registerListeners
():
void
{
this
.
_register
(
this
.
configurationService
.
onDidChangeConfiguration
(
e
=>
{
if
(
e
.
affectsConfiguration
(
openModeSettingKey
))
{
this
.
openOnSingleClick
=
useSingleClickToOpen
(
this
.
configurationService
);
}
}));
}
shouldOpen
(
event
:
UIEvent
):
boolean
{
if
(
event
instanceof
MouseEvent
)
{
const
isDoubleClick
=
event
.
detail
===
2
;
if
(
!
useSingleClickToOpen
(
this
.
configurationService
)
&&
!
isDoubleClick
)
{
if
(
!
this
.
openOnSingleClick
&&
!
isDoubleClick
)
{
return
false
;
}
...
...
@@ -167,14 +197,19 @@ class WorkbenchOpenController implements IOpenController {
}
}
function
toWorkbenchListOptions
<
T
>
(
options
:
IListOptions
<
T
>
,
configurationService
:
IConfigurationService
,
keybindingService
:
IKeybindingService
):
IListOptions
<
T
>
{
function
toWorkbenchListOptions
<
T
>
(
options
:
IListOptions
<
T
>
,
configurationService
:
IConfigurationService
,
keybindingService
:
IKeybindingService
):
[
IListOptions
<
T
>
,
IDisposable
]
{
const
disposables
:
IDisposable
[]
=
[];
const
result
=
{
...
options
};
if
(
options
.
multipleSelectionSupport
!==
false
&&
!
options
.
multipleSelectionController
)
{
result
.
multipleSelectionController
=
new
MultipleSelectionController
(
configurationService
);
const
multipleSelectionController
=
new
MultipleSelectionController
(
configurationService
);
result
.
multipleSelectionController
=
multipleSelectionController
;
disposables
.
push
(
multipleSelectionController
);
}
result
.
openController
=
new
WorkbenchOpenController
(
configurationService
,
options
.
openController
);
const
openController
=
new
WorkbenchOpenController
(
configurationService
,
options
.
openController
);
result
.
openController
=
openController
;
disposables
.
push
(
openController
);
if
(
options
.
keyboardNavigationLabelProvider
)
{
const
tlp
=
options
.
keyboardNavigationLabelProvider
;
...
...
@@ -185,7 +220,7 @@ function toWorkbenchListOptions<T>(options: IListOptions<T>, configurationServic
};
}
return
result
;
return
[
result
,
combinedDisposable
(
disposables
)]
;
}
let
sharedListStyleSheet
:
HTMLStyleElement
;
...
...
@@ -241,17 +276,20 @@ export class WorkbenchList<T> extends List<T> {
@
IKeybindingService
keybindingService
:
IKeybindingService
)
{
const
horizontalScrolling
=
typeof
options
.
horizontalScrolling
!==
'
undefined
'
?
options
.
horizontalScrolling
:
configurationService
.
getValue
<
boolean
>
(
horizontalScrollingKey
);
const
[
workbenchListOptions
,
workbenchListOptionsDisposable
]
=
toWorkbenchListOptions
(
options
,
configurationService
,
keybindingService
);
super
(
container
,
delegate
,
renderers
,
{
keyboardSupport
:
false
,
styleController
:
new
DefaultStyleController
(
getSharedListStyleSheet
()),
...
computeStyles
(
themeService
.
getTheme
(),
defaultListStyles
),
...
toWorkbenchListOptions
(
options
,
configurationService
,
keybindingService
)
,
...
workbenchListOptions
,
horizontalScrolling
}
as
IListOptions
<
T
>
);
this
.
disposables
.
push
(
workbenchListOptionsDisposable
);
this
.
contextKeyService
=
createScopedContextKeyService
(
contextKeyService
,
this
);
this
.
configurationService
=
configurationService
;
...
...
@@ -951,12 +989,13 @@ export class WorkbenchObjectTree<T extends NonNullable<any>, TFilterData = void>
const
keyboardNavigation
=
configurationService
.
getValue
<
string
>
(
keyboardNavigationSettingKey
);
const
horizontalScrolling
=
typeof
options
.
horizontalScrolling
!==
'
undefined
'
?
options
.
horizontalScrolling
:
configurationService
.
getValue
<
boolean
>
(
horizontalScrollingKey
);
const
openOnSingleClick
=
useSingleClickToOpen
(
configurationService
);
const
[
workbenchListOptions
,
workbenchListOptionsDisposable
]
=
toWorkbenchListOptions
(
options
,
configurationService
,
keybindingService
);
super
(
container
,
delegate
,
renderers
,
{
keyboardSupport
:
false
,
styleController
:
new
DefaultStyleController
(
getSharedListStyleSheet
()),
...
computeStyles
(
themeService
.
getTheme
(),
defaultListStyles
),
...
toWorkbenchListOptions
(
options
,
configurationService
,
keybindingService
)
,
...
workbenchListOptions
,
indent
:
configurationService
.
getValue
(
treeIndentKey
),
automaticKeyboardNavigation
,
simpleKeyboardNavigation
:
keyboardNavigation
===
'
simple
'
,
...
...
@@ -966,6 +1005,8 @@ export class WorkbenchObjectTree<T extends NonNullable<any>, TFilterData = void>
keyboardNavigationEventFilter
:
createKeyboardNavigationEventFilter
(
container
,
keybindingService
)
});
this
.
disposables
.
push
(
workbenchListOptionsDisposable
);
this
.
contextKeyService
=
createScopedContextKeyService
(
contextKeyService
,
this
);
const
listSupportsMultiSelect
=
WorkbenchListSupportsMultiSelectContextKey
.
bindTo
(
this
.
contextKeyService
);
...
...
@@ -1067,12 +1108,13 @@ export class WorkbenchDataTree<TInput, T, TFilterData = void> extends DataTree<T
const
keyboardNavigation
=
configurationService
.
getValue
<
string
>
(
keyboardNavigationSettingKey
);
const
horizontalScrolling
=
typeof
options
.
horizontalScrolling
!==
'
undefined
'
?
options
.
horizontalScrolling
:
configurationService
.
getValue
<
boolean
>
(
horizontalScrollingKey
);
const
openOnSingleClick
=
useSingleClickToOpen
(
configurationService
);
const
[
workbenchListOptions
,
workbenchListOptionsDisposable
]
=
toWorkbenchListOptions
(
options
,
configurationService
,
keybindingService
);
super
(
container
,
delegate
,
renderers
,
dataSource
,
{
keyboardSupport
:
false
,
styleController
:
new
DefaultStyleController
(
getSharedListStyleSheet
()),
...
computeStyles
(
themeService
.
getTheme
(),
defaultListStyles
),
...
toWorkbenchListOptions
(
options
,
configurationService
,
keybindingService
)
,
...
workbenchListOptions
,
indent
:
configurationService
.
getValue
(
treeIndentKey
),
automaticKeyboardNavigation
,
simpleKeyboardNavigation
:
keyboardNavigation
===
'
simple
'
,
...
...
@@ -1082,6 +1124,8 @@ export class WorkbenchDataTree<TInput, T, TFilterData = void> extends DataTree<T
keyboardNavigationEventFilter
:
createKeyboardNavigationEventFilter
(
container
,
keybindingService
)
});
this
.
disposables
.
push
(
workbenchListOptionsDisposable
);
this
.
contextKeyService
=
createScopedContextKeyService
(
contextKeyService
,
this
);
const
listSupportsMultiSelect
=
WorkbenchListSupportsMultiSelectContextKey
.
bindTo
(
this
.
contextKeyService
);
...
...
@@ -1178,12 +1222,13 @@ export class WorkbenchAsyncDataTree<TInput, T, TFilterData = void> extends Async
const
keyboardNavigation
=
configurationService
.
getValue
<
string
>
(
keyboardNavigationSettingKey
);
const
horizontalScrolling
=
typeof
options
.
horizontalScrolling
!==
'
undefined
'
?
options
.
horizontalScrolling
:
configurationService
.
getValue
<
boolean
>
(
horizontalScrollingKey
);
const
openOnSingleClick
=
useSingleClickToOpen
(
configurationService
);
const
[
workbenchListOptions
,
workbenchListOptionsDisposable
]
=
toWorkbenchListOptions
(
options
,
configurationService
,
keybindingService
);
super
(
container
,
delegate
,
renderers
,
dataSource
,
{
keyboardSupport
:
false
,
styleController
:
new
DefaultStyleController
(
getSharedListStyleSheet
()),
...
computeStyles
(
themeService
.
getTheme
(),
defaultListStyles
),
...
toWorkbenchListOptions
(
options
,
configurationService
,
keybindingService
)
,
...
workbenchListOptions
,
indent
:
configurationService
.
getValue
<
number
>
(
treeIndentKey
),
automaticKeyboardNavigation
,
simpleKeyboardNavigation
:
keyboardNavigation
===
'
simple
'
,
...
...
@@ -1193,6 +1238,8 @@ export class WorkbenchAsyncDataTree<TInput, T, TFilterData = void> extends Async
keyboardNavigationEventFilter
:
createKeyboardNavigationEventFilter
(
container
,
keybindingService
)
});
this
.
disposables
.
push
(
workbenchListOptionsDisposable
);
this
.
contextKeyService
=
createScopedContextKeyService
(
contextKeyService
,
this
);
const
listSupportsMultiSelect
=
WorkbenchListSupportsMultiSelectContextKey
.
bindTo
(
this
.
contextKeyService
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录