Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
3ab33cac
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
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,发现更多精彩内容 >>
提交
3ab33cac
编写于
2月 15, 2017
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix list open
上级
e63560b2
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
31 addition
and
29 deletion
+31
-29
src/vs/base/browser/ui/list/list.ts
src/vs/base/browser/ui/list/list.ts
+4
-9
src/vs/base/browser/ui/list/listPaging.ts
src/vs/base/browser/ui/list/listPaging.ts
+3
-3
src/vs/base/browser/ui/list/listWidget.ts
src/vs/base/browser/ui/list/listWidget.ts
+18
-10
src/vs/editor/contrib/suggest/browser/suggestWidget.ts
src/vs/editor/contrib/suggest/browser/suggestWidget.ts
+4
-4
src/vs/workbench/electron-browser/commands.ts
src/vs/workbench/electron-browser/commands.ts
+1
-2
src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts
src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts
+1
-1
未找到文件。
src/vs/base/browser/ui/list/list.ts
浏览文件 @
3ab33cac
...
...
@@ -21,17 +21,12 @@ export interface IListElementEvent<T, E> {
event
:
E
;
}
export
interface
IListMouseEvent
<
T
>
extends
MouseEvent
{
element
:
T
;
index
:
number
;
}
export
interface
IFocusChangeEvent
<
T
>
{
export
interface
IListEvent
<
T
>
{
elements
:
T
[];
indexes
:
number
[];
}
export
interface
I
SelectionChangeEvent
<
T
>
{
element
s
:
T
[]
;
index
es
:
number
[]
;
export
interface
I
ListMouseEvent
<
T
>
extends
MouseEvent
{
element
:
T
;
index
:
number
;
}
\ No newline at end of file
src/vs/base/browser/ui/list/listPaging.ts
浏览文件 @
3ab33cac
...
...
@@ -6,7 +6,7 @@
import
'
vs/css!./list
'
;
import
{
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
range
}
from
'
vs/base/common/arrays
'
;
import
{
IDelegate
,
IRenderer
,
I
FocusChangeEvent
,
ISelectionChange
Event
}
from
'
./list
'
;
import
{
IDelegate
,
IRenderer
,
I
List
Event
}
from
'
./list
'
;
import
{
List
,
IListOptions
}
from
'
./listWidget
'
;
import
{
IPagedModel
}
from
'
vs/base/common/paging
'
;
import
Event
,
{
mapEvent
}
from
'
vs/base/common/event
'
;
...
...
@@ -77,11 +77,11 @@ export class PagedList<T> {
return
this
.
list
;
}
get
onFocusChange
():
Event
<
I
FocusChange
Event
<
T
>>
{
get
onFocusChange
():
Event
<
I
List
Event
<
T
>>
{
return
mapEvent
(
this
.
list
.
onFocusChange
,
({
elements
,
indexes
})
=>
({
elements
:
elements
.
map
(
e
=>
this
.
_model
.
get
(
e
)),
indexes
}));
}
get
onSelectionChange
():
Event
<
I
SelectionChange
Event
<
T
>>
{
get
onSelectionChange
():
Event
<
I
List
Event
<
T
>>
{
return
mapEvent
(
this
.
list
.
onSelectionChange
,
({
elements
,
indexes
})
=>
({
elements
:
elements
.
map
(
e
=>
this
.
_model
.
get
(
e
)),
indexes
}));
}
...
...
src/vs/base/browser/ui/list/listWidget.ts
浏览文件 @
3ab33cac
...
...
@@ -13,7 +13,7 @@ import { KeyCode } from 'vs/base/common/keyCodes';
import
{
StandardKeyboardEvent
}
from
'
vs/base/browser/keyboardEvent
'
;
import
Event
,
{
Emitter
,
EventBufferer
,
chain
,
mapEvent
,
fromCallback
}
from
'
vs/base/common/event
'
;
import
{
domEvent
}
from
'
vs/base/browser/event
'
;
import
{
IDelegate
,
IRenderer
,
IList
MouseEvent
,
IFocusChangeEvent
,
ISelectionChang
eEvent
}
from
'
./list
'
;
import
{
IDelegate
,
IRenderer
,
IList
Event
,
IListMous
eEvent
}
from
'
./list
'
;
import
{
ListView
,
IListViewOptions
}
from
'
./listView
'
;
export
interface
IIdentityProvider
<
T
>
{
...
...
@@ -183,7 +183,7 @@ class KeyboardController<T> implements IDisposable {
private
onEnter
(
e
:
StandardKeyboardEvent
):
void
{
e
.
preventDefault
();
e
.
stopPropagation
();
this
.
list
.
setSelectio
n
(
this
.
list
.
getFocus
());
this
.
list
.
ope
n
(
this
.
list
.
getFocus
());
}
private
onUpArrow
(
e
:
StandardKeyboardEvent
):
void
{
...
...
@@ -224,6 +224,7 @@ class KeyboardController<T> implements IDisposable {
}
class
MouseController
<
T
>
implements
IDisposable
{
private
disposables
:
IDisposable
[];
constructor
(
...
...
@@ -246,7 +247,7 @@ class MouseController<T> implements IDisposable {
e
.
stopPropagation
();
this
.
view
.
domNode
.
focus
();
this
.
list
.
setFocus
([
e
.
index
]);
this
.
list
.
setSelectio
n
([
e
.
index
]);
this
.
list
.
ope
n
([
e
.
index
]);
}
dispose
()
{
...
...
@@ -278,21 +279,23 @@ export class List<T> implements ISpliceable<T>, IDisposable {
private
spliceable
:
ISpliceable
<
T
>
;
private
disposables
:
IDisposable
[];
@
memoize
get
onFocusChange
():
Event
<
IFocusChangeEvent
<
T
>>
{
@
memoize
get
onFocusChange
():
Event
<
IListEvent
<
T
>>
{
return
mapEvent
(
this
.
eventBufferer
.
wrapEvent
(
this
.
focus
.
onChange
),
e
=>
this
.
toListEvent
(
e
));
}
@
memoize
get
onSelectionChange
():
Event
<
ISelectionChangeEvent
<
T
>>
{
@
memoize
get
onSelectionChange
():
Event
<
IListEvent
<
T
>>
{
return
mapEvent
(
this
.
eventBufferer
.
wrapEvent
(
this
.
selection
.
onChange
),
e
=>
this
.
toListEvent
(
e
));
}
@
memoize
get
onContextMenu
():
Event
<
IListMouseEvent
<
T
>>
{
@
memoize
get
onContextMenu
():
Event
<
IListMouseEvent
<
T
>>
{
return
fromCallback
(
handler
=>
this
.
view
.
addListener
(
'
contextmenu
'
,
handler
));
}
private
_onOpen
=
new
Emitter
<
number
[]
>
();
@
memoize
get
onOpen
():
Event
<
IListEvent
<
T
>>
{
return
mapEvent
(
this
.
_onOpen
.
event
,
indexes
=>
this
.
toListEvent
({
indexes
}));
}
private
_onDOMFocus
=
new
Emitter
<
void
>
();
get
onDOMFocus
():
Event
<
void
>
{
return
this
.
_onDOMFocus
.
event
;
}
...
...
@@ -500,7 +503,7 @@ export class List<T> implements ISpliceable<T>, IDisposable {
}
}
getElementDomId
(
index
:
number
):
string
{
private
getElementDomId
(
index
:
number
):
string
{
return
`
${
this
.
idPrefix
}
_
${
index
}
`
;
}
...
...
@@ -512,6 +515,11 @@ export class List<T> implements ISpliceable<T>, IDisposable {
return
this
.
view
.
domNode
;
}
open
(
indexes
:
number
[]):
void
{
this
.
setSelection
(
indexes
);
this
.
_onOpen
.
fire
(
indexes
);
}
private
toListEvent
({
indexes
}:
ITraitChangeEvent
)
{
return
{
indexes
,
elements
:
indexes
.
map
(
i
=>
this
.
view
.
element
(
i
))
};
}
...
...
src/vs/editor/contrib/suggest/browser/suggestWidget.ts
浏览文件 @
3ab33cac
...
...
@@ -14,7 +14,7 @@ import { isPromiseCanceledError, onUnexpectedError } from 'vs/base/common/errors
import
{
IDisposable
,
dispose
,
toDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
addClass
,
append
,
$
,
hide
,
removeClass
,
show
,
toggleClass
}
from
'
vs/base/browser/dom
'
;
import
{
HighlightedLabel
}
from
'
vs/base/browser/ui/highlightedlabel/highlightedLabel
'
;
import
{
IDelegate
,
I
FocusChangeEvent
,
IRenderer
,
ISelectionChangeEvent
}
from
'
vs/base/browser/ui/list/list
'
;
import
{
IDelegate
,
I
ListEvent
,
IRenderer
}
from
'
vs/base/browser/ui/list/list
'
;
import
{
List
}
from
'
vs/base/browser/ui/list/listWidget
'
;
import
{
DomScrollableElement
}
from
'
vs/base/browser/ui/scrollbar/scrollableElement
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
...
...
@@ -407,7 +407,7 @@ export class SuggestWidget implements IContentWidget, IDelegate<ICompletionItem>
});
}
private
onListSelection
(
e
:
I
SelectionChange
Event
<
ICompletionItem
>
):
void
{
private
onListSelection
(
e
:
I
List
Event
<
ICompletionItem
>
):
void
{
if
(
!
e
.
elements
.
length
)
{
return
;
}
...
...
@@ -439,7 +439,7 @@ export class SuggestWidget implements IContentWidget, IDelegate<ICompletionItem>
}
}
private
onListFocus
(
e
:
I
FocusChange
Event
<
ICompletionItem
>
):
void
{
private
onListFocus
(
e
:
I
List
Event
<
ICompletionItem
>
):
void
{
if
(
!
e
.
elements
.
length
)
{
if
(
this
.
currentSuggestionDetails
)
{
this
.
currentSuggestionDetails
.
cancel
();
...
...
@@ -591,7 +591,7 @@ export class SuggestWidget implements IContentWidget, IDelegate<ICompletionItem>
this
.
completionModel
=
null
;
}
else
{
const
{
stats
}
=
this
.
completionModel
;
const
{
stats
}
=
this
.
completionModel
;
stats
[
'
wasAutomaticallyTriggered
'
]
=
!!
isAuto
;
this
.
telemetryService
.
publicLog
(
'
suggestWidget
'
,
stats
);
...
...
src/vs/workbench/electron-browser/commands.ts
浏览文件 @
3ab33cac
...
...
@@ -266,8 +266,7 @@ export function registerCommands(): void {
// List
if
(
focused
instanceof
List
)
{
const
list
=
focused
;
list
.
setSelection
(
list
.
getFocus
());
list
.
open
(
list
.
getFocus
());
}
// Tree
...
...
src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts
浏览文件 @
3ab33cac
...
...
@@ -222,7 +222,7 @@ export class SCMViewlet extends Viewlet {
this
.
disposables
.
push
(
this
.
listService
.
register
(
this
.
list
));
chain
(
this
.
list
.
on
SelectionChange
)
chain
(
this
.
list
.
on
Open
)
.
map
(
e
=>
e
.
elements
[
0
])
.
filter
(
e
=>
!!
e
&&
isSCMResource
(
e
))
.
on
(
this
.
open
,
this
,
this
.
disposables
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录