Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
c3b5f2bf
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,发现更多精彩内容 >>
未验证
提交
c3b5f2bf
编写于
11月 04, 2020
作者:
J
João Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
cleanup for #89313
上级
1b9cd42b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
40 addition
and
36 deletion
+40
-36
src/vs/base/browser/ui/tree/compressedObjectTreeModel.ts
src/vs/base/browser/ui/tree/compressedObjectTreeModel.ts
+4
-5
src/vs/workbench/contrib/scm/browser/scmViewPane.ts
src/vs/workbench/contrib/scm/browser/scmViewPane.ts
+36
-31
未找到文件。
src/vs/base/browser/ui/tree/compressedObjectTreeModel.ts
浏览文件 @
c3b5f2bf
...
...
@@ -38,8 +38,8 @@ export function compress<T>(element: ICompressedTreeElement<T>): ITreeElement<IC
const
elements
=
[
element
.
element
];
const
incompressible
=
element
.
incompressible
||
false
;
let
childrenIterator
:
Iterable
<
ITreeElement
<
T
>>
;
let
children
:
ITreeElement
<
T
>
[];
let
childrenIterator
:
Iterable
<
I
Compressed
TreeElement
<
T
>>
;
let
children
:
I
Compressed
TreeElement
<
T
>
[];
while
(
true
)
{
[
children
,
childrenIterator
]
=
Iterable
.
consume
(
Iterable
.
from
(
element
.
children
),
2
);
...
...
@@ -48,12 +48,11 @@ export function compress<T>(element: ICompressedTreeElement<T>): ITreeElement<IC
break
;
}
let
childElement
:
ICompressedTreeElement
<
T
>
=
children
[
0
];
if
(
childElement
.
incompressible
)
{
if
(
children
[
0
].
incompressible
)
{
break
;
}
element
=
childElement
;
element
=
children
[
0
];
elements
.
push
(
element
.
element
);
}
...
...
src/vs/workbench/contrib/scm/browser/scmViewPane.ts
浏览文件 @
c3b5f2bf
...
...
@@ -42,7 +42,7 @@ import { IViewDescriptorService, ViewContainerLocation } from 'vs/workbench/comm
import
{
localize
}
from
'
vs/nls
'
;
import
{
coalesce
,
flatten
}
from
'
vs/base/common/arrays
'
;
import
{
memoize
}
from
'
vs/base/common/decorators
'
;
import
{
IStorageService
,
StorageScope
,
WillSaveStateReason
}
from
'
vs/platform/storage/common/storage
'
;
import
{
IStorageService
,
StorageScope
,
StorageTarget
,
WillSaveStateReason
}
from
'
vs/platform/storage/common/storage
'
;
import
{
EditorResourceAccessor
,
SideBySideEditor
}
from
'
vs/workbench/common/editor
'
;
import
{
SIDE_BAR_BACKGROUND
,
SIDE_BAR_BORDER
,
PANEL_BACKGROUND
,
PANEL_INPUT_BORDER
}
from
'
vs/workbench/common/theme
'
;
import
{
CodeEditorWidget
,
ICodeEditorWidgetOptions
}
from
'
vs/editor/browser/widget/codeEditorWidget
'
;
...
...
@@ -733,7 +733,7 @@ interface IRepositoryItem {
}
interface
ITreeViewState
{
readonly
expand
ed
:
string
[];
readonly
collaps
ed
:
string
[];
}
function
isRepositoryItem
(
item
:
IRepositoryItem
|
IGroupItem
):
item
is
IRepositoryItem
{
...
...
@@ -742,7 +742,7 @@ function isRepositoryItem(item: IRepositoryItem | IGroupItem): item is IReposito
function
asTreeElement
(
node
:
IResourceNode
<
ISCMResource
,
ISCMResourceGroup
>
,
forceIncompressible
:
boolean
,
viewState
?:
ITreeViewState
):
ICompressedTreeElement
<
TreeElement
>
{
const
element
=
(
node
.
childrenCount
===
0
&&
node
.
element
)
?
node
.
element
:
node
;
const
collapsed
=
viewState
?
viewState
.
expanded
.
indexOf
(
getSCMResourceId
(
element
))
===
-
1
:
false
;
const
collapsed
=
viewState
?
viewState
.
collapsed
.
indexOf
(
getSCMResourceId
(
element
))
>
-
1
:
false
;
return
{
element
,
...
...
@@ -801,7 +801,15 @@ class ViewModel {
}
}
get
treeViewState
():
ITreeViewState
|
undefined
{
return
this
.
_treeViewState
;
}
private
_treeViewStateIsStale
=
false
;
get
treeViewState
():
ITreeViewState
|
undefined
{
if
(
this
.
visible
&&
this
.
_treeViewStateIsStale
)
{
this
.
updateViewState
();
this
.
_treeViewStateIsStale
=
false
;
}
return
this
.
_treeViewState
;
}
private
items
=
new
Map
<
ISCMRepository
,
IRepositoryItem
>
();
private
visibilityDisposables
=
new
DisposableStore
();
...
...
@@ -831,7 +839,7 @@ class ViewModel {
configurationService
.
onDidChangeConfiguration
(
this
.
onDidChangeConfiguration
,
this
,
this
.
disposables
);
this
.
onDidChangeConfiguration
();
this
.
disposables
.
add
(
this
.
tree
.
onDidChangeCollapseState
(()
=>
this
.
updateViewState
()
));
this
.
disposables
.
add
(
this
.
tree
.
onDidChangeCollapseState
(()
=>
this
.
_treeViewStateIsStale
=
true
));
}
private
onDidChangeConfiguration
(
e
?:
IConfigurationChangeEvent
):
void
{
...
...
@@ -949,12 +957,12 @@ class ViewModel {
if
(
!
this
.
alwaysShowRepositories
&&
(
this
.
items
.
size
===
1
&&
(
!
item
||
isRepositoryItem
(
item
))))
{
const
item
=
Iterable
.
first
(
this
.
items
.
values
())
!
;
this
.
tree
.
setChildren
(
null
,
this
.
render
(
item
,
this
.
treeViewState
).
children
);
this
.
tree
.
setChildren
(
null
,
this
.
render
(
item
,
this
.
_
treeViewState
).
children
);
}
else
if
(
item
)
{
this
.
tree
.
setChildren
(
item
.
element
,
this
.
render
(
item
,
this
.
treeViewState
).
children
);
this
.
tree
.
setChildren
(
item
.
element
,
this
.
render
(
item
,
this
.
_
treeViewState
).
children
);
}
else
{
const
items
=
coalesce
(
this
.
scmViewService
.
visibleRepositories
.
map
(
r
=>
this
.
items
.
get
(
r
)));
this
.
tree
.
setChildren
(
null
,
items
.
map
(
item
=>
this
.
render
(
item
,
this
.
treeViewState
)));
this
.
tree
.
setChildren
(
null
,
items
.
map
(
item
=>
this
.
render
(
item
,
this
.
_
treeViewState
)));
}
if
(
focusedInput
)
{
...
...
@@ -981,7 +989,7 @@ class ViewModel {
children
.
push
(...
item
.
groupItems
.
map
(
i
=>
this
.
render
(
i
,
treeViewState
)));
}
const
collapsed
=
treeViewState
?
treeViewState
.
expanded
.
indexOf
(
getSCMResourceId
(
item
.
element
))
===
-
1
:
false
;
const
collapsed
=
treeViewState
?
treeViewState
.
collapsed
.
indexOf
(
getSCMResourceId
(
item
.
element
))
>
-
1
:
false
;
return
{
element
:
item
.
element
,
children
,
incompressible
:
true
,
collapsed
,
collapsible
:
true
};
}
else
{
...
...
@@ -989,17 +997,17 @@ class ViewModel {
?
Iterable
.
map
(
item
.
resources
,
element
=>
({
element
,
incompressible
:
true
}))
:
Iterable
.
map
(
item
.
tree
.
root
.
children
,
node
=>
asTreeElement
(
node
,
true
,
treeViewState
));
const
collapsed
=
treeViewState
?
treeViewState
.
expanded
.
indexOf
(
getSCMResourceId
(
item
.
element
))
===
-
1
:
false
;
const
collapsed
=
treeViewState
?
treeViewState
.
collapsed
.
indexOf
(
getSCMResourceId
(
item
.
element
))
>
-
1
:
false
;
return
{
element
:
item
.
element
,
children
,
incompressible
:
true
,
collapsed
,
collapsible
:
true
};
}
}
private
updateViewState
():
void
{
const
expand
ed
:
string
[]
=
[];
const
collaps
ed
:
string
[]
=
[];
const
visit
=
(
node
:
ITreeNode
<
TreeElement
|
null
,
FuzzyScore
>
)
=>
{
if
(
node
.
element
&&
node
.
collapsible
&&
!
node
.
collapsed
)
{
expand
ed
.
push
(
getSCMResourceId
(
node
.
element
));
if
(
node
.
element
&&
node
.
collapsible
&&
node
.
collapsed
)
{
collaps
ed
.
push
(
getSCMResourceId
(
node
.
element
));
}
for
(
const
child
of
node
.
children
)
{
...
...
@@ -1009,7 +1017,7 @@ class ViewModel {
visit
(
this
.
tree
.
getNode
());
this
.
_treeViewState
=
{
expand
ed
};
this
.
_treeViewState
=
{
collaps
ed
};
}
private
onDidActiveEditorChange
():
void
{
...
...
@@ -1761,23 +1769,22 @@ export class SCMViewPane extends ViewPane {
append
(
this
.
listContainer
,
overflowWidgetsDomNode
);
let
viewMode
=
this
.
configurationService
.
getValue
<
'
tree
'
|
'
list
'
>
(
'
scm.defaultViewMode
'
)
===
'
list
'
?
ViewModelMode
.
List
:
ViewModelMode
.
Tree
;
let
treeViewState
:
ITreeViewState
|
undefined
;
const
raw
=
this
.
storageService
.
get
(
`scm.viewState`
,
StorageScope
.
WORKSPACE
);
if
(
raw
)
{
let
data
:
any
;
try
{
data
=
JSON
.
parse
(
raw
);
}
catch
(
e
)
{
}
const
storageMode
=
this
.
storageService
.
get
(
`scm.viewMode`
,
StorageScope
.
WORKSPACE
)
as
ViewModelMode
;
if
(
typeof
storageMode
===
'
string
'
)
{
viewMode
=
storageMode
;
}
if
(
typeof
data
.
mode
===
'
string
'
)
{
viewMode
=
data
.
mode
;
}
treeViewState
=
data
.
treeViewState
;
let
viewState
:
ITreeViewState
|
undefined
;
const
storageViewState
=
this
.
storageService
.
get
(
`scm.viewState`
,
StorageScope
.
WORKSPACE
);
if
(
storageViewState
)
{
try
{
viewState
=
JSON
.
parse
(
storageViewState
);
}
catch
{
/* noop */
}
}
this
.
viewModel
=
this
.
instantiationService
.
createInstance
(
ViewModel
,
this
.
tree
,
this
.
inputRenderer
,
viewMode
,
ViewModelSortKey
.
Path
,
treeV
iewState
);
this
.
viewModel
=
this
.
instantiationService
.
createInstance
(
ViewModel
,
this
.
tree
,
this
.
inputRenderer
,
viewMode
,
ViewModelSortKey
.
Path
,
v
iewState
);
this
.
_register
(
this
.
viewModel
);
this
.
listContainer
.
classList
.
add
(
'
file-icon-themable-tree
'
);
...
...
@@ -1797,10 +1804,7 @@ export class SCMViewPane extends ViewPane {
this
.
_register
(
this
.
storageService
.
onWillSaveState
(
e
=>
{
if
(
e
.
reason
===
WillSaveStateReason
.
SHUTDOWN
)
{
this
.
storageService
.
store
(
`scm.viewState`
,
JSON
.
stringify
({
mode
:
this
.
viewModel
.
mode
,
treeViewState
:
this
.
viewModel
.
treeViewState
}),
StorageScope
.
WORKSPACE
);
this
.
storageService
.
store2
(
`scm.viewState`
,
JSON
.
stringify
(
this
.
viewModel
.
treeViewState
),
StorageScope
.
WORKSPACE
,
StorageTarget
.
MACHINE
);
}
}));
}
...
...
@@ -1814,6 +1818,7 @@ export class SCMViewPane extends ViewPane {
private
onDidChangeMode
():
void
{
this
.
updateIndentStyles
(
this
.
themeService
.
getFileIconTheme
());
this
.
storageService
.
store2
(
`scm.viewMode`
,
this
.
viewModel
.
mode
,
StorageScope
.
WORKSPACE
,
StorageTarget
.
USER
);
}
layoutBody
(
height
:
number
|
undefined
=
this
.
layoutCache
.
height
,
width
:
number
|
undefined
=
this
.
layoutCache
.
width
):
void
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录