Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
徽霖
Vscode
提交
dcc563a7
V
Vscode
项目概览
徽霖
/
Vscode
通知
9
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
Vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
dcc563a7
编写于
12月 27, 2017
作者:
C
Christopher Leidigh
提交者:
GitHub
12月 27, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
🎄
SelectBox: First character navigation (#40874)
上级
968af832
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
13 deletion
+19
-13
src/vs/base/browser/ui/selectBox/selectBoxCustom.ts
src/vs/base/browser/ui/selectBox/selectBoxCustom.ts
+19
-13
未找到文件。
src/vs/base/browser/ui/selectBox/selectBoxCustom.ts
浏览文件 @
dcc563a7
...
...
@@ -8,7 +8,7 @@ import 'vs/css!./selectBoxCustom';
import
*
as
nls
from
'
vs/nls
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
Event
,
{
Emitter
,
chain
}
from
'
vs/base/common/event
'
;
import
{
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
import
{
KeyCode
,
KeyCodeUtils
}
from
'
vs/base/common/keyCodes
'
;
import
{
StandardKeyboardEvent
}
from
'
vs/base/browser/keyboardEvent
'
;
import
*
as
dom
from
'
vs/base/browser/dom
'
;
import
*
as
arrays
from
'
vs/base/common/arrays
'
;
...
...
@@ -161,20 +161,12 @@ export class SelectBoxList implements ISelectBoxDelegate, IDelegate<ISelectOptio
}
}));
this
.
toDispose
.
push
(
dom
.
addDisposableListener
(
this
.
selectElement
,
dom
.
EventType
.
MOUSE_UP
,
(
e
)
=>
{
dom
.
EventHelper
.
stop
(
e
);
}));
this
.
toDispose
.
push
(
dom
.
addDisposableListener
(
this
.
selectElement
,
dom
.
EventType
.
MOUSE_DOWN
,
(
e
)
=>
{
dom
.
EventHelper
.
stop
(
e
);
}));
// Intercept keyboard handling
this
.
toDispose
.
push
(
dom
.
addDisposableListener
(
this
.
selectElement
,
dom
.
EventType
.
KEY_UP
,
(
e
:
KeyboardEvent
)
=>
{
dom
.
EventHelper
.
stop
(
e
);
}));
this
.
toDispose
.
push
(
dom
.
addDisposableListener
(
this
.
selectElement
,
dom
.
EventType
.
KEY_DOWN
,
(
e
:
KeyboardEvent
)
=>
{
const
event
=
new
StandardKeyboardEvent
(
e
);
let
showDropDown
=
false
;
...
...
@@ -195,10 +187,6 @@ export class SelectBoxList implements ISelectBoxDelegate, IDelegate<ISelectOptio
dom
.
EventHelper
.
stop
(
e
);
}
}));
this
.
toDispose
.
push
(
dom
.
addDisposableListener
(
this
.
selectElement
,
dom
.
EventType
.
KEY_PRESS
,
(
e
:
KeyboardEvent
)
=>
{
dom
.
EventHelper
.
stop
(
e
);
}));
}
public
get
onDidSelect
():
Event
<
ISelectData
>
{
...
...
@@ -490,6 +478,7 @@ export class SelectBoxList implements ISelectBoxDelegate, IDelegate<ISelectOptio
onSelectDropDownKeyDown
.
filter
(
e
=>
e
.
keyCode
===
KeyCode
.
Escape
).
on
(
e
=>
this
.
onEscape
(
e
),
this
,
this
.
toDispose
);
onSelectDropDownKeyDown
.
filter
(
e
=>
e
.
keyCode
===
KeyCode
.
UpArrow
).
on
(
this
.
onUpArrow
,
this
,
this
.
toDispose
);
onSelectDropDownKeyDown
.
filter
(
e
=>
e
.
keyCode
===
KeyCode
.
DownArrow
).
on
(
this
.
onDownArrow
,
this
,
this
.
toDispose
);
onSelectDropDownKeyDown
.
filter
(
e
=>
(
e
.
keyCode
>=
KeyCode
.
KEY_0
&&
e
.
keyCode
<=
KeyCode
.
KEY_Z
)
||
(
e
.
keyCode
>=
KeyCode
.
US_SEMICOLON
&&
e
.
keyCode
<=
KeyCode
.
NUMPAD_DIVIDE
)).
on
(
this
.
onCharacter
,
this
,
this
.
toDispose
);
// SetUp list mouse controller - control navigation, disabled items, focus
...
...
@@ -596,6 +585,23 @@ export class SelectBoxList implements ISelectBoxDelegate, IDelegate<ISelectOptio
}
}
// Mimic option first character navigation of native select
private
onCharacter
(
e
:
StandardKeyboardEvent
):
void
{
const
ch
=
KeyCodeUtils
.
toString
(
e
.
keyCode
);
let
optionIndex
=
-
1
;
for
(
let
i
=
0
;
i
<
this
.
options
.
length
-
1
;
i
++
)
{
optionIndex
=
(
i
+
this
.
selected
+
1
)
%
this
.
options
.
length
;
if
(
this
.
options
[
optionIndex
].
charAt
(
0
).
toUpperCase
()
===
ch
)
{
this
.
select
(
optionIndex
);
this
.
selectList
.
setFocus
([
optionIndex
]);
this
.
selectList
.
reveal
(
this
.
selectList
.
getFocus
()[
0
]);
dom
.
EventHelper
.
stop
(
e
);
break
;
}
}
}
public
dispose
():
void
{
this
.
toDispose
=
dispose
(
this
.
toDispose
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录