Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
18c10b15
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,发现更多精彩内容 >>
提交
18c10b15
编写于
2月 05, 2020
作者:
N
nrayburn
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Replace timeout interval with MutationObserver for monaco editor AutoLayout
上级
7fab6bf6
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
23 addition
and
7 deletion
+23
-7
src/vs/editor/browser/config/elementSizeObserver.ts
src/vs/editor/browser/config/elementSizeObserver.ts
+23
-7
未找到文件。
src/vs/editor/browser/config/elementSizeObserver.ts
浏览文件 @
18c10b15
...
...
@@ -9,18 +9,18 @@ import { IDimension } from 'vs/editor/common/editorCommon';
export
class
ElementSizeObserver
extends
Disposable
{
private
readonly
referenceDomElement
:
HTMLElement
|
null
;
private
measureReferenceDomElementToken
:
any
;
private
readonly
changeCallback
:
()
=>
void
;
private
width
:
number
;
private
height
:
number
;
private
resizeObserver
:
any
;
constructor
(
referenceDomElement
:
HTMLElement
|
null
,
dimension
:
IDimension
|
undefined
,
changeCallback
:
()
=>
void
)
{
super
();
this
.
referenceDomElement
=
referenceDomElement
;
this
.
changeCallback
=
changeCallback
;
this
.
measureReferenceDomElementToken
=
-
1
;
this
.
width
=
-
1
;
this
.
height
=
-
1
;
this
.
resizeObserver
=
null
;
this
.
measureReferenceDomElement
(
false
,
dimension
);
}
...
...
@@ -38,15 +38,23 @@ export class ElementSizeObserver extends Disposable {
}
public
startObserving
():
void
{
if
(
this
.
measureReferenceDomElementToken
===
-
1
)
{
this
.
measureReferenceDomElementToken
=
setInterval
(()
=>
this
.
measureReferenceDomElement
(
true
),
100
);
if
(
this
.
resizeObserver
===
null
)
{
this
.
resizeObserver
=
new
MutationObserver
(
this
.
mutationObserve
.
bind
(
this
));
this
.
resizeObserver
.
observe
(
this
.
referenceDomElement
,
{
attributes
:
true
,
childList
:
true
,
characterData
:
true
,
subtree
:
true
});
window
.
addEventListener
(
'
resize
'
,
this
.
windowObserve
.
bind
(
this
));
}
}
public
stopObserving
():
void
{
if
(
this
.
measureReferenceDomElementToken
!==
-
1
)
{
clearInterval
(
this
.
measureReferenceDomElementToken
);
this
.
measureReferenceDomElementToken
=
-
1
;
if
(
this
.
resizeObserver
!==
null
)
{
this
.
resizeObserver
.
disconnect
();
this
.
resizeObserver
=
null
;
window
.
removeEventListener
(
'
resize
'
,
this
.
windowObserve
.
bind
(
this
));
}
}
...
...
@@ -54,6 +62,14 @@ export class ElementSizeObserver extends Disposable {
this
.
measureReferenceDomElement
(
true
,
dimension
);
}
private
mutationObserve
(
mutations
:
MutationRecord
[],
observer
:
MutationObserver
):
void
{
this
.
measureReferenceDomElement
(
true
);
}
private
windowObserve
():
void
{
this
.
measureReferenceDomElement
(
true
);
}
private
measureReferenceDomElement
(
callChangeCallback
:
boolean
,
dimension
?:
IDimension
):
void
{
let
observedWidth
=
0
;
let
observedHeight
=
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录