Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
ce9ebb49
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,发现更多精彩内容 >>
提交
ce9ebb49
编写于
10月 28, 2020
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Notifications no longer detect duplicates if rapidly firing (fix #109504)
上级
3e97229e
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
24 addition
and
12 deletion
+24
-12
src/vs/workbench/browser/parts/notifications/notificationsToasts.ts
...kbench/browser/parts/notifications/notificationsToasts.ts
+24
-12
未找到文件。
src/vs/workbench/browser/parts/notifications/notificationsToasts.ts
浏览文件 @
ce9ebb49
...
...
@@ -29,7 +29,6 @@ interface INotificationToast {
list
:
NotificationsList
;
container
:
HTMLElement
;
toast
:
HTMLElement
;
toDispose
:
DisposableStore
;
}
enum
ToastVisibility
{
...
...
@@ -67,6 +66,8 @@ export class NotificationsToasts extends Themable implements INotificationsToast
private
isNotificationsCenterVisible
:
boolean
|
undefined
;
private
readonly
mapNotificationToToast
=
new
Map
<
INotificationViewItem
,
INotificationToast
>
();
private
readonly
mapNotificationToDisposable
=
new
Map
<
INotificationViewItem
,
IDisposable
>
();
private
readonly
notificationsToastsVisibleContextKey
=
NotificationsToastsVisibleContext
.
bindTo
(
this
.
contextKeyService
);
private
readonly
addedToastsIntervalCounter
=
new
IntervalCounter
(
NotificationsToasts
.
SPAM_PROTECTION
.
interval
);
...
...
@@ -158,6 +159,7 @@ export class NotificationsToasts extends Themable implements INotificationsToast
// the toast until the renderer has time to process it.
// (see also https://github.com/microsoft/vscode/issues/107935)
const
itemDisposables
=
new
DisposableStore
();
this
.
mapNotificationToDisposable
.
set
(
item
,
itemDisposables
);
itemDisposables
.
add
(
scheduleAtNextAnimationFrame
(()
=>
this
.
doAddToast
(
item
,
itemDisposables
)));
}
...
...
@@ -197,7 +199,7 @@ export class NotificationsToasts extends Themable implements INotificationsToast
});
itemDisposables
.
add
(
notificationList
);
const
toast
:
INotificationToast
=
{
item
,
list
:
notificationList
,
container
:
notificationToastContainer
,
toast
:
notificationToast
,
toDispose
:
itemDisposables
};
const
toast
:
INotificationToast
=
{
item
,
list
:
notificationList
,
container
:
notificationToastContainer
,
toast
:
notificationToast
};
this
.
mapNotificationToToast
.
set
(
item
,
toast
);
// When disposed, remove as visible
...
...
@@ -320,6 +322,7 @@ export class NotificationsToasts extends Themable implements INotificationsToast
private
removeToast
(
item
:
INotificationViewItem
):
void
{
let
focusEditor
=
false
;
// UI
const
notificationToast
=
this
.
mapNotificationToToast
.
get
(
item
);
if
(
notificationToast
)
{
const
toastHasDOMFocus
=
isAncestor
(
document
.
activeElement
,
notificationToast
.
container
);
...
...
@@ -327,13 +330,17 @@ export class NotificationsToasts extends Themable implements INotificationsToast
focusEditor
=
!
(
this
.
focusNext
()
||
this
.
focusPrevious
());
// focus next if any, otherwise focus editor
}
// Listeners
dispose
(
notificationToast
.
toDispose
);
// Remove from Map
this
.
mapNotificationToToast
.
delete
(
item
);
}
// Disposables
const
notificationDisposables
=
this
.
mapNotificationToDisposable
.
get
(
item
);
if
(
notificationDisposables
)
{
dispose
(
notificationDisposables
);
this
.
mapNotificationToDisposable
.
delete
(
item
);
}
// Layout if we still have toasts
if
(
this
.
mapNotificationToToast
.
size
>
0
)
{
this
.
layout
(
this
.
workbenchDimensions
);
...
...
@@ -351,9 +358,14 @@ export class NotificationsToasts extends Themable implements INotificationsToast
}
private
removeToasts
():
void
{
this
.
mapNotificationToToast
.
forEach
(
toast
=>
dispose
(
toast
.
toDispose
));
// Toast
this
.
mapNotificationToToast
.
clear
();
// Disposables
this
.
mapNotificationToDisposable
.
forEach
(
disposable
=>
dispose
(
disposable
));
this
.
mapNotificationToDisposable
.
clear
();
this
.
doHide
();
}
...
...
@@ -465,15 +477,15 @@ export class NotificationsToasts extends Themable implements INotificationsToast
}
protected
updateStyles
():
void
{
this
.
mapNotificationToToast
.
forEach
(
t
=>
{
this
.
mapNotificationToToast
.
forEach
(
({
toast
})
=>
{
const
backgroundColor
=
this
.
getColor
(
NOTIFICATIONS_BACKGROUND
);
t
.
t
oast
.
style
.
background
=
backgroundColor
?
backgroundColor
:
''
;
toast
.
style
.
background
=
backgroundColor
?
backgroundColor
:
''
;
const
widgetShadowColor
=
this
.
getColor
(
widgetShadow
);
t
.
t
oast
.
style
.
boxShadow
=
widgetShadowColor
?
`0 0px 8px
${
widgetShadowColor
}
`
:
''
;
toast
.
style
.
boxShadow
=
widgetShadowColor
?
`0 0px 8px
${
widgetShadowColor
}
`
:
''
;
const
borderColor
=
this
.
getColor
(
NOTIFICATIONS_TOAST_BORDER
);
t
.
t
oast
.
style
.
border
=
borderColor
?
`1px solid
${
borderColor
}
`
:
''
;
toast
.
style
.
border
=
borderColor
?
`1px solid
${
borderColor
}
`
:
''
;
});
}
...
...
@@ -548,7 +560,7 @@ export class NotificationsToasts extends Themable implements INotificationsToast
}
private
layoutLists
(
width
:
number
):
void
{
this
.
mapNotificationToToast
.
forEach
(
toast
=>
toast
.
list
.
layout
(
width
));
this
.
mapNotificationToToast
.
forEach
(
({
list
})
=>
list
.
layout
(
width
));
}
private
layoutContainer
(
heightToGive
:
number
):
void
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录