Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
8dd6ff6d
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,发现更多精彩内容 >>
提交
8dd6ff6d
编写于
6月 22, 2018
作者:
R
Rob Lourens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Settings editor - sync scroll from settings tree to TOC tree
上级
c3ad9789
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
46 addition
and
7 deletion
+46
-7
src/vs/base/parts/tree/browser/tree.ts
src/vs/base/parts/tree/browser/tree.ts
+6
-0
src/vs/base/parts/tree/browser/treeImpl.ts
src/vs/base/parts/tree/browser/treeImpl.ts
+9
-0
src/vs/base/parts/tree/browser/treeView.ts
src/vs/base/parts/tree/browser/treeView.ts
+9
-0
src/vs/workbench/parts/preferences/browser/settingsEditor2.ts
...vs/workbench/parts/preferences/browser/settingsEditor2.ts
+21
-6
src/vs/workbench/parts/preferences/browser/settingsTree.ts
src/vs/workbench/parts/preferences/browser/settingsTree.ts
+1
-1
未找到文件。
src/vs/base/parts/tree/browser/tree.ts
浏览文件 @
8dd6ff6d
...
...
@@ -25,6 +25,7 @@ export interface ITree {
onDidExpandItem
:
Event
<
IItemExpandEvent
>
;
onDidCollapseItem
:
Event
<
IItemCollapseEvent
>
;
onDidDispose
:
Event
<
void
>
;
onDidScroll
:
Event
<
void
>
;
/**
* Returns the tree's DOM element.
...
...
@@ -148,6 +149,11 @@ export interface ITree {
*/
getRelativeTop
(
element
:
any
):
number
;
/**
* Returns the top-most visible element.
*/
getFirstVisibleElement
():
any
;
/**
* Returns a number between 0 and 1 representing how much the tree is scroll down. 0 means all the way
* to the top; 1 means all the way down.
...
...
src/vs/base/parts/tree/browser/treeImpl.ts
浏览文件 @
8dd6ff6d
...
...
@@ -119,6 +119,10 @@ export class Tree implements _.ITree {
return
this
.
view
&&
this
.
view
.
onDOMBlur
;
}
get
onDidScroll
():
Event
<
void
>
{
return
this
.
view
&&
this
.
view
.
onDidScroll
;
}
public
getHTMLElement
():
HTMLElement
{
return
this
.
view
.
getHTMLElement
();
}
...
...
@@ -209,6 +213,11 @@ export class Tree implements _.ITree {
return
this
.
view
.
getRelativeTop
(
item
);
}
public
getFirstVisibleElement
():
any
{
return
this
.
view
.
getFirstVisibleElement
();
}
public
getScrollPosition
():
number
{
return
this
.
view
.
getScrollPosition
();
}
...
...
src/vs/base/parts/tree/browser/treeView.ts
浏览文件 @
8dd6ff6d
...
...
@@ -445,6 +445,9 @@ export class TreeView extends HeightMap {
private
readonly
_onDOMBlur
:
Emitter
<
void
>
=
new
Emitter
<
void
>
();
get
onDOMBlur
():
Event
<
void
>
{
return
this
.
_onDOMBlur
.
event
;
}
private
readonly
_onDidScroll
:
Emitter
<
void
>
=
new
Emitter
<
void
>
();
get
onDidScroll
():
Event
<
void
>
{
return
this
.
_onDidScroll
.
event
;
}
constructor
(
context
:
_
.
ITreeContext
,
container
:
HTMLElement
)
{
super
();
...
...
@@ -510,6 +513,7 @@ export class TreeView extends HeightMap {
});
this
.
scrollableElement
.
onScroll
((
e
)
=>
{
this
.
render
(
e
.
scrollTop
,
e
.
height
,
e
.
scrollLeft
,
e
.
width
,
e
.
scrollWidth
);
this
.
_onDidScroll
.
fire
();
});
if
(
Browser
.
isIE
)
{
...
...
@@ -649,6 +653,11 @@ export class TreeView extends HeightMap {
}
}
public
getFirstVisibleElement
():
any
{
const
item
=
this
.
itemAtIndex
(
this
.
indexAt
(
this
.
lastRenderTop
));
return
item
&&
item
.
model
.
getElement
();
}
private
render
(
scrollTop
:
number
,
viewHeight
:
number
,
scrollLeft
:
number
,
viewWidth
:
number
,
scrollWidth
:
number
):
void
{
var
i
:
number
;
var
stop
:
number
;
...
...
src/vs/workbench/parts/preferences/browser/settingsEditor2.ts
浏览文件 @
8dd6ff6d
...
...
@@ -260,7 +260,7 @@ export class SettingsEditor2 extends BaseEditor {
return
false
;
};
if
(
element
&&
(
!
currentSelection
||
!
isEqualOrParent
(
currentSelection
,
element
)))
{
if
(
element
&&
!
e
.
payload
.
fromScroll
&&
(
!
currentSelection
||
!
isEqualOrParent
(
currentSelection
,
element
)))
{
this
.
settingsTree
.
reveal
(
element
,
0
);
this
.
settingsTree
.
setSelection
([
element
]);
this
.
settingsTree
.
setFocus
(
element
);
...
...
@@ -336,14 +336,29 @@ export class SettingsEditor2 extends BaseEditor {
this
.
selectedElement
=
e
.
focus
;
}));
this
.
_register
(
this
.
settingsTree
.
onDidChangeSelection
(
e
=>
{
const
element
=
e
.
selection
[
0
]
instanceof
SettingsTreeSettingElement
?
e
.
selection
[
0
].
parent
:
e
.
selection
[
0
]
instanceof
SettingsTreeGroupElement
?
e
.
selection
[
0
]
:
this
.
_register
(
this
.
settingsTree
.
onDidScroll
(()
=>
{
if
(
this
.
searchResultModel
)
{
return
;
}
if
(
!
this
.
tocTree
.
getInput
())
{
return
;
}
const
topElement
=
this
.
settingsTree
.
getFirstVisibleElement
();
const
element
=
topElement
instanceof
SettingsTreeSettingElement
?
topElement
.
parent
:
topElement
instanceof
SettingsTreeGroupElement
?
topElement
:
null
;
if
(
element
&&
this
.
tocTree
.
getSelection
()[
0
]
!==
element
)
{
const
elementTop
=
this
.
tocTree
.
getRelativeTop
(
element
);
if
(
elementTop
<
0
)
{
this
.
tocTree
.
reveal
(
element
,
0
);
this
.
tocTree
.
setSelection
([
element
]);
}
else
if
(
elementTop
>
1
)
{
this
.
tocTree
.
reveal
(
element
,
1
);
}
this
.
tocTree
.
setSelection
([
element
],
{
fromScroll
:
true
});
this
.
tocTree
.
setFocus
(
element
);
}
}));
...
...
src/vs/workbench/parts/preferences/browser/settingsTree.ts
浏览文件 @
8dd6ff6d
...
...
@@ -632,7 +632,7 @@ export class SettingsRenderer implements IRenderer {
template
.
context
=
element
;
DOM
.
toggleClass
(
template
.
parent
,
'
is-configured
'
,
element
.
isConfigured
);
DOM
.
toggleClass
(
template
.
parent
,
'
is-expanded
'
,
isSelected
);
template
.
containerElement
.
id
=
element
.
id
;
template
.
containerElement
.
id
=
element
.
id
.
replace
(
/
\.
/g
,
'
_
'
)
;
const
titleTooltip
=
setting
.
key
;
template
.
categoryElement
.
textContent
=
element
.
displayCategory
&&
(
element
.
displayCategory
+
'
:
'
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录