Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
ab8b83b8
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,发现更多精彩内容 >>
提交
ab8b83b8
编写于
2月 26, 2020
作者:
R
rebornix
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update list view item height.
上级
14cf2b82
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
53 addition
and
6 deletion
+53
-6
src/vs/base/browser/ui/list/listView.ts
src/vs/base/browser/ui/list/listView.ts
+48
-5
src/vs/base/browser/ui/list/listWidget.ts
src/vs/base/browser/ui/list/listWidget.ts
+1
-1
src/vs/base/browser/ui/scrollbar/scrollableElement.ts
src/vs/base/browser/ui/scrollbar/scrollableElement.ts
+4
-0
未找到文件。
src/vs/base/browser/ui/list/listView.ts
浏览文件 @
ab8b83b8
...
@@ -21,6 +21,7 @@ import { equals, distinct } from 'vs/base/common/arrays';
...
@@ -21,6 +21,7 @@ import { equals, distinct } from 'vs/base/common/arrays';
import
{
DataTransfers
,
StaticDND
,
IDragAndDropData
}
from
'
vs/base/browser/dnd
'
;
import
{
DataTransfers
,
StaticDND
,
IDragAndDropData
}
from
'
vs/base/browser/dnd
'
;
import
{
disposableTimeout
,
Delayer
}
from
'
vs/base/common/async
'
;
import
{
disposableTimeout
,
Delayer
}
from
'
vs/base/common/async
'
;
import
{
isFirefox
}
from
'
vs/base/browser/browser
'
;
import
{
isFirefox
}
from
'
vs/base/browser/browser
'
;
import
{
IMouseWheelEvent
}
from
'
vs/base/browser/mouseEvent
'
;
interface
IItem
<
T
>
{
interface
IItem
<
T
>
{
readonly
id
:
string
;
readonly
id
:
string
;
...
@@ -198,6 +199,7 @@ export class ListView<T> implements ISpliceable<T>, IDisposable {
...
@@ -198,6 +199,7 @@ export class ListView<T> implements ISpliceable<T>, IDisposable {
get
onDidScroll
():
Event
<
ScrollEvent
>
{
return
this
.
scrollableElement
.
onScroll
;
}
get
onDidScroll
():
Event
<
ScrollEvent
>
{
return
this
.
scrollableElement
.
onScroll
;
}
get
onWillScroll
():
Event
<
ScrollEvent
>
{
return
this
.
scrollableElement
.
onWillScroll
;
}
get
onWillScroll
():
Event
<
ScrollEvent
>
{
return
this
.
scrollableElement
.
onWillScroll
;
}
get
containerDomNode
():
HTMLElement
{
return
this
.
rowsContainer
;
}
constructor
(
constructor
(
container
:
HTMLElement
,
container
:
HTMLElement
,
...
@@ -273,6 +275,28 @@ export class ListView<T> implements ISpliceable<T>, IDisposable {
...
@@ -273,6 +275,28 @@ export class ListView<T> implements ISpliceable<T>, IDisposable {
this
.
layout
();
this
.
layout
();
}
}
triggerScrollFromMouseWheelEvent
(
browserEvent
:
IMouseWheelEvent
)
{
this
.
scrollableElement
.
triggerScrollFromMouseWheelEvent
(
browserEvent
);
}
updateElementHeight
(
index
:
number
,
element
:
T
,
size
:
number
):
void
{
const
lastRenderRange
=
this
.
getRenderRange
(
this
.
lastRenderTop
,
this
.
lastRenderHeight
);
let
heightDiff
=
index
<
lastRenderRange
.
start
?
size
-
this
.
items
[
index
].
size
:
0
;
this
.
rangeMap
.
splice
(
index
,
1
,
[{
size
:
size
}]);
this
.
items
[
index
].
size
=
size
;
this
.
render
(
lastRenderRange
,
this
.
lastRenderTop
+
heightDiff
,
this
.
lastRenderHeight
,
undefined
,
undefined
,
true
);
if
(
this
.
supportDynamicHeights
)
{
this
.
_rerender
(
this
.
lastRenderTop
,
this
.
lastRenderHeight
);
}
this
.
eventuallyUpdateScrollDimensions
();
return
;
}
splice
(
start
:
number
,
deleteCount
:
number
,
elements
:
T
[]
=
[]):
T
[]
{
splice
(
start
:
number
,
deleteCount
:
number
,
elements
:
T
[]
=
[]):
T
[]
{
if
(
this
.
splicing
)
{
if
(
this
.
splicing
)
{
throw
new
Error
(
'
Can
\'
t run recursive splices.
'
);
throw
new
Error
(
'
Can
\'
t run recursive splices.
'
);
...
@@ -516,14 +540,21 @@ export class ListView<T> implements ISpliceable<T>, IDisposable {
...
@@ -516,14 +540,21 @@ export class ListView<T> implements ISpliceable<T>, IDisposable {
// Render
// Render
private
render
(
renderTop
:
number
,
renderHeight
:
number
,
renderLeft
:
number
,
scrollWidth
:
number
):
void
{
private
render
(
previousRenderRange
:
IRange
,
renderTop
:
number
,
renderHeight
:
number
,
renderLeft
:
number
|
undefined
,
scrollWidth
:
number
|
undefined
,
updateItemsInDOM
:
boolean
=
false
):
void
{
const
previousRenderRange
=
this
.
getRenderRange
(
this
.
lastRenderTop
,
this
.
lastRenderHeight
);
const
renderRange
=
this
.
getRenderRange
(
renderTop
,
renderHeight
);
const
renderRange
=
this
.
getRenderRange
(
renderTop
,
renderHeight
);
const
rangesToInsert
=
Range
.
relativeComplement
(
renderRange
,
previousRenderRange
);
const
rangesToInsert
=
Range
.
relativeComplement
(
renderRange
,
previousRenderRange
);
const
rangesToRemove
=
Range
.
relativeComplement
(
previousRenderRange
,
renderRange
);
const
rangesToRemove
=
Range
.
relativeComplement
(
previousRenderRange
,
renderRange
);
const
beforeElement
=
this
.
getNextToLastElement
(
rangesToInsert
);
const
beforeElement
=
this
.
getNextToLastElement
(
rangesToInsert
);
if
(
updateItemsInDOM
)
{
const
rangesToUpdate
=
Range
.
intersect
(
previousRenderRange
,
renderRange
);
for
(
let
i
=
rangesToUpdate
.
start
;
i
<
rangesToUpdate
.
end
;
i
++
)
{
this
.
updateItemInDOM
(
this
.
items
[
i
],
i
);
}
}
for
(
const
range
of
rangesToInsert
)
{
for
(
const
range
of
rangesToInsert
)
{
for
(
let
i
=
range
.
start
;
i
<
range
.
end
;
i
++
)
{
for
(
let
i
=
range
.
start
;
i
<
range
.
end
;
i
++
)
{
this
.
insertItemInDOM
(
i
,
beforeElement
);
this
.
insertItemInDOM
(
i
,
beforeElement
);
...
@@ -536,10 +567,13 @@ export class ListView<T> implements ISpliceable<T>, IDisposable {
...
@@ -536,10 +567,13 @@ export class ListView<T> implements ISpliceable<T>, IDisposable {
}
}
}
}
this
.
rowsContainer
.
style
.
left
=
`-
${
renderLeft
}
px`
;
if
(
renderLeft
!==
undefined
)
{
this
.
rowsContainer
.
style
.
left
=
`-
${
renderLeft
}
px`
;
}
this
.
rowsContainer
.
style
.
top
=
`-
${
renderTop
}
px`
;
this
.
rowsContainer
.
style
.
top
=
`-
${
renderTop
}
px`
;
if
(
this
.
horizontalScrolling
)
{
if
(
this
.
horizontalScrolling
&&
scrollWidth
!==
undefined
)
{
this
.
rowsContainer
.
style
.
width
=
`
${
Math
.
max
(
scrollWidth
,
this
.
renderWidth
)}
px`
;
this
.
rowsContainer
.
style
.
width
=
`
${
Math
.
max
(
scrollWidth
,
this
.
renderWidth
)}
px`
;
}
}
...
@@ -741,7 +775,8 @@ export class ListView<T> implements ISpliceable<T>, IDisposable {
...
@@ -741,7 +775,8 @@ export class ListView<T> implements ISpliceable<T>, IDisposable {
private
onScroll
(
e
:
ScrollEvent
):
void
{
private
onScroll
(
e
:
ScrollEvent
):
void
{
try
{
try
{
this
.
render
(
e
.
scrollTop
,
e
.
height
,
e
.
scrollLeft
,
e
.
scrollWidth
);
const
previousRenderRange
=
this
.
getRenderRange
(
this
.
lastRenderTop
,
this
.
lastRenderHeight
);
this
.
render
(
previousRenderRange
,
e
.
scrollTop
,
e
.
height
,
e
.
scrollLeft
,
e
.
scrollWidth
);
if
(
this
.
supportDynamicHeights
)
{
if
(
this
.
supportDynamicHeights
)
{
this
.
_rerender
(
e
.
scrollTop
,
e
.
height
);
this
.
_rerender
(
e
.
scrollTop
,
e
.
height
);
...
@@ -1097,6 +1132,14 @@ export class ListView<T> implements ISpliceable<T>, IDisposable {
...
@@ -1097,6 +1132,14 @@ export class ListView<T> implements ISpliceable<T>, IDisposable {
}
}
const
size
=
item
.
size
;
const
size
=
item
.
size
;
if
(
item
.
row
&&
item
.
row
.
domNode
)
{
let
newSize
=
item
.
row
.
domNode
.
offsetHeight
;
item
.
size
=
newSize
;
item
.
lastDynamicHeightWidth
=
this
.
renderWidth
;
return
newSize
-
size
;
}
const
row
=
this
.
cache
.
alloc
(
item
.
templateId
);
const
row
=
this
.
cache
.
alloc
(
item
.
templateId
);
row
.
domNode
!
.
style
.
height
=
''
;
row
.
domNode
!
.
style
.
height
=
''
;
...
...
src/vs/base/browser/ui/list/listWidget.ts
浏览文件 @
ab8b83b8
...
@@ -1115,7 +1115,7 @@ export class List<T> implements ISpliceable<T>, IDisposable {
...
@@ -1115,7 +1115,7 @@ export class List<T> implements ISpliceable<T>, IDisposable {
private
focus
:
Trait
<
T
>
;
private
focus
:
Trait
<
T
>
;
private
selection
:
Trait
<
T
>
;
private
selection
:
Trait
<
T
>
;
private
eventBufferer
=
new
EventBufferer
();
private
eventBufferer
=
new
EventBufferer
();
pr
ivate
view
:
ListView
<
T
>
;
pr
otected
view
:
ListView
<
T
>
;
private
spliceable
:
ISpliceable
<
T
>
;
private
spliceable
:
ISpliceable
<
T
>
;
private
styleController
:
IStyleController
;
private
styleController
:
IStyleController
;
private
typeLabelController
?:
TypeLabelController
<
T
>
;
private
typeLabelController
?:
TypeLabelController
<
T
>
;
...
...
src/vs/base/browser/ui/scrollbar/scrollableElement.ts
浏览文件 @
ab8b83b8
...
@@ -303,6 +303,10 @@ export abstract class AbstractScrollableElement extends Widget {
...
@@ -303,6 +303,10 @@ export abstract class AbstractScrollableElement extends Widget {
this
.
_revealOnScroll
=
value
;
this
.
_revealOnScroll
=
value
;
}
}
public
triggerScrollFromMouseWheelEvent
(
browserEvent
:
IMouseWheelEvent
)
{
this
.
_onMouseWheel
(
new
StandardWheelEvent
(
browserEvent
));
}
// -------------------- mouse wheel scrolling --------------------
// -------------------- mouse wheel scrolling --------------------
private
_setListeningToMouseWheel
(
shouldListen
:
boolean
):
void
{
private
_setListeningToMouseWheel
(
shouldListen
:
boolean
):
void
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录