Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
5f69bcbc
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,发现更多精彩内容 >>
提交
5f69bcbc
编写于
10月 09, 2018
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
revealedCount -> renderNodeCount
上级
d4faab68
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
29 addition
and
29 deletion
+29
-29
src/vs/base/browser/ui/tree/indexTreeModel.ts
src/vs/base/browser/ui/tree/indexTreeModel.ts
+28
-28
src/vs/base/browser/ui/tree/tree.ts
src/vs/base/browser/ui/tree/tree.ts
+1
-1
未找到文件。
src/vs/base/browser/ui/tree/indexTreeModel.ts
浏览文件 @
5f69bcbc
...
...
@@ -14,7 +14,7 @@ interface IMutableTreeNode<T, TFilterData> extends ITreeNode<T, TFilterData> {
readonly
children
:
IMutableTreeNode
<
T
,
TFilterData
>
[];
collapsible
:
boolean
;
collapsed
:
boolean
;
re
vealed
Count
:
number
;
re
nderNode
Count
:
number
;
visible
:
boolean
;
filterData
:
TFilterData
|
undefined
;
}
...
...
@@ -51,7 +51,7 @@ export class IndexTreeModel<T, TFilterData = void> implements ITreeModel<T, TFil
depth
:
0
,
collapsible
:
false
,
collapsed
:
false
,
re
vealed
Count
:
0
,
re
nderNode
Count
:
0
,
visible
:
true
,
filterData
:
undefined
};
...
...
@@ -81,20 +81,20 @@ export class IndexTreeModel<T, TFilterData = void> implements ITreeModel<T, TFil
const
nodesToInsertIterator
=
Iterator
.
map
(
Iterator
.
from
(
toInsert
),
el
=>
this
.
createTreeNode
(
el
,
parentNode
,
revealed
,
treeListElementsToInsert
,
onDidCreateNode
));
const
nodesToInsert
:
IMutableTreeNode
<
T
,
TFilterData
>
[]
=
[];
let
re
vealed
Count
=
0
;
let
re
nderNode
Count
=
0
;
Iterator
.
forEach
(
nodesToInsertIterator
,
node
=>
{
nodesToInsert
.
push
(
node
);
re
vealedCount
+=
node
.
revealed
Count
;
re
nderNodeCount
+=
node
.
renderNode
Count
;
});
const
lastIndex
=
location
[
location
.
length
-
1
];
const
deletedNodes
=
parentNode
.
children
.
splice
(
lastIndex
,
deleteCount
,
...
nodesToInsert
);
if
(
revealed
)
{
const
visibleDeleteCount
=
deletedNodes
.
reduce
((
r
,
node
)
=>
r
+
node
.
re
vealed
Count
,
0
);
const
visibleDeleteCount
=
deletedNodes
.
reduce
((
r
,
node
)
=>
r
+
node
.
re
nderNode
Count
,
0
);
this
.
_updateAncestorsRe
vealedCount
(
parentNode
,
revealed
Count
-
visibleDeleteCount
);
this
.
_updateAncestorsRe
nderNodeCount
(
parentNode
,
renderNode
Count
-
visibleDeleteCount
);
this
.
list
.
splice
(
listIndex
,
visibleDeleteCount
,
treeListElementsToInsert
);
}
...
...
@@ -146,9 +146,9 @@ export class IndexTreeModel<T, TFilterData = void> implements ITreeModel<T, TFil
}
refilter
():
void
{
const
previousRe
vealedCount
=
this
.
root
.
revealed
Count
;
const
previousRe
nderNodeCount
=
this
.
root
.
renderNode
Count
;
const
toInsert
=
this
.
updateNodeAfterFilterChange
(
this
.
root
);
this
.
list
.
splice
(
0
,
previousRe
vealed
Count
,
toInsert
);
this
.
list
.
splice
(
0
,
previousRe
nderNode
Count
,
toInsert
);
}
private
_setCollapsed
(
node
:
IMutableTreeNode
<
T
,
TFilterData
>
,
listIndex
:
number
,
revealed
:
boolean
,
collapsed
?:
boolean
|
undefined
):
boolean
{
...
...
@@ -167,10 +167,10 @@ export class IndexTreeModel<T, TFilterData = void> implements ITreeModel<T, TFil
node
.
collapsed
=
collapsed
;
if
(
revealed
)
{
const
previousRe
vealedCount
=
node
.
revealed
Count
;
const
previousRe
nderNodeCount
=
node
.
renderNode
Count
;
const
toInsert
=
this
.
updateNodeAfterCollapseChange
(
node
);
this
.
list
.
splice
(
listIndex
+
1
,
previousRe
vealed
Count
-
1
,
toInsert
.
slice
(
1
));
this
.
list
.
splice
(
listIndex
+
1
,
previousRe
nderNode
Count
-
1
,
toInsert
.
slice
(
1
));
this
.
_onDidChangeCollapseState
.
fire
(
node
);
}
...
...
@@ -191,7 +191,7 @@ export class IndexTreeModel<T, TFilterData = void> implements ITreeModel<T, TFil
depth
:
parent
.
depth
+
1
,
collapsible
:
typeof
treeElement
.
collapsible
===
'
boolean
'
?
treeElement
.
collapsible
:
(
typeof
treeElement
.
collapsed
===
'
boolean
'
),
collapsed
:
!!
treeElement
.
collapsed
,
re
vealed
Count
:
1
,
re
nderNode
Count
:
1
,
visible
:
true
,
filterData
:
undefined
};
...
...
@@ -207,25 +207,25 @@ export class IndexTreeModel<T, TFilterData = void> implements ITreeModel<T, TFil
const
childNodes
=
Iterator
.
map
(
childElements
,
el
=>
this
.
createTreeNode
(
el
,
node
,
childRevealed
,
treeListElements
,
onDidCreateNode
));
let
hasVisibleDescendants
=
false
;
let
re
vealed
Count
=
1
;
let
re
nderNode
Count
=
1
;
Iterator
.
forEach
(
childNodes
,
child
=>
{
node
.
children
.
push
(
child
);
hasVisibleDescendants
=
hasVisibleDescendants
||
child
.
visible
;
re
vealedCount
+=
child
.
revealed
Count
;
re
nderNodeCount
+=
child
.
renderNode
Count
;
});
node
.
collapsible
=
node
.
collapsible
||
node
.
children
.
length
>
0
;
node
.
visible
=
typeof
visible
===
'
undefined
'
?
hasVisibleDescendants
:
visible
;
if
(
!
node
.
visible
)
{
node
.
re
vealed
Count
=
0
;
node
.
re
nderNode
Count
=
0
;
if
(
revealed
)
{
treeListElements
.
pop
();
}
}
else
if
(
!
node
.
collapsed
)
{
node
.
re
vealedCount
=
revealed
Count
;
node
.
re
nderNodeCount
=
renderNode
Count
;
}
if
(
onDidCreateNode
)
{
...
...
@@ -236,11 +236,11 @@ export class IndexTreeModel<T, TFilterData = void> implements ITreeModel<T, TFil
}
private
updateNodeAfterCollapseChange
(
node
:
IMutableTreeNode
<
T
,
TFilterData
>
):
ITreeNode
<
T
,
TFilterData
>
[]
{
const
previousRe
vealedCount
=
node
.
revealed
Count
;
const
previousRe
nderNodeCount
=
node
.
renderNode
Count
;
const
result
:
ITreeNode
<
T
,
TFilterData
>
[]
=
[];
this
.
_updateNodeAfterCollapseChange
(
node
,
result
);
this
.
_updateAncestorsRe
vealedCount
(
node
.
parent
,
result
.
length
-
previousRevealed
Count
);
this
.
_updateAncestorsRe
nderNodeCount
(
node
.
parent
,
result
.
length
-
previousRenderNode
Count
);
return
result
;
}
...
...
@@ -251,23 +251,23 @@ export class IndexTreeModel<T, TFilterData = void> implements ITreeModel<T, TFil
}
result
.
push
(
node
);
node
.
re
vealed
Count
=
1
;
node
.
re
nderNode
Count
=
1
;
if
(
!
node
.
collapsed
)
{
for
(
const
child
of
node
.
children
)
{
node
.
re
vealed
Count
+=
this
.
_updateNodeAfterCollapseChange
(
child
,
result
);
node
.
re
nderNode
Count
+=
this
.
_updateNodeAfterCollapseChange
(
child
,
result
);
}
}
return
node
.
re
vealed
Count
;
return
node
.
re
nderNode
Count
;
}
private
updateNodeAfterFilterChange
(
node
:
IMutableTreeNode
<
T
,
TFilterData
>
):
ITreeNode
<
T
,
TFilterData
>
[]
{
const
previousRe
vealedCount
=
node
.
revealed
Count
;
const
previousRe
nderNodeCount
=
node
.
renderNode
Count
;
const
result
:
ITreeNode
<
T
,
TFilterData
>
[]
=
[];
this
.
_updateNodeAfterFilterChange
(
node
,
result
);
this
.
_updateAncestorsRe
vealedCount
(
node
.
parent
,
result
.
length
-
previousRevealed
Count
);
this
.
_updateAncestorsRe
nderNodeCount
(
node
.
parent
,
result
.
length
-
previousRenderNode
Count
);
return
result
;
}
...
...
@@ -289,7 +289,7 @@ export class IndexTreeModel<T, TFilterData = void> implements ITreeModel<T, TFil
}
const
resultStartLength
=
result
.
length
;
node
.
re
vealed
Count
=
node
===
this
.
root
?
0
:
1
;
node
.
re
nderNode
Count
=
node
===
this
.
root
?
0
:
1
;
let
hasVisibleDescendants
=
false
;
if
(
visible
!==
false
||
!
node
.
collapsed
)
{
...
...
@@ -303,25 +303,25 @@ export class IndexTreeModel<T, TFilterData = void> implements ITreeModel<T, TFil
}
if
(
!
node
.
visible
)
{
node
.
re
vealed
Count
=
0
;
node
.
re
nderNode
Count
=
0
;
if
(
revealed
)
{
result
.
pop
();
}
}
else
if
(
!
node
.
collapsed
)
{
node
.
re
vealed
Count
+=
result
.
length
-
resultStartLength
;
node
.
re
nderNode
Count
+=
result
.
length
-
resultStartLength
;
}
return
node
.
visible
;
}
private
_updateAncestorsRe
vealed
Count
(
node
:
IMutableTreeNode
<
T
,
TFilterData
>
,
diff
:
number
):
void
{
private
_updateAncestorsRe
nderNode
Count
(
node
:
IMutableTreeNode
<
T
,
TFilterData
>
,
diff
:
number
):
void
{
if
(
diff
===
0
)
{
return
;
}
while
(
node
)
{
node
.
re
vealed
Count
+=
diff
;
node
.
re
nderNode
Count
+=
diff
;
node
=
node
.
parent
;
}
}
...
...
@@ -380,7 +380,7 @@ export class IndexTreeModel<T, TFilterData = void> implements ITreeModel<T, TFil
// TODO@joao perf!
for
(
let
i
=
0
;
i
<
index
;
i
++
)
{
listIndex
+=
node
.
children
[
i
].
re
vealed
Count
;
listIndex
+=
node
.
children
[
i
].
re
nderNode
Count
;
}
revealed
=
revealed
&&
!
node
.
collapsed
;
...
...
src/vs/base/browser/ui/tree/tree.ts
浏览文件 @
5f69bcbc
...
...
@@ -42,7 +42,7 @@ export interface ITreeNode<T, TFilterData = void> {
readonly
depth
:
number
;
readonly
collapsible
:
boolean
;
readonly
collapsed
:
boolean
;
readonly
re
vealed
Count
:
number
;
readonly
re
nderNode
Count
:
number
;
readonly
visible
:
boolean
;
readonly
filterData
:
TFilterData
|
undefined
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录