Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
15540a11
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,体验更适合开发者的 AI 搜索 >>
提交
15540a11
编写于
2月 17, 2018
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
notifications - purge toast after timeout
上级
5f6c4dca
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
35 addition
and
4 deletion
+35
-4
src/vs/workbench/browser/parts/notifications/notificationsToasts.ts
...kbench/browser/parts/notifications/notificationsToasts.ts
+35
-4
未找到文件。
src/vs/workbench/browser/parts/notifications/notificationsToasts.ts
浏览文件 @
15540a11
...
...
@@ -7,8 +7,8 @@
import
'
vs/css!./media/notificationsToasts
'
;
import
{
INotificationsModel
,
NotificationChangeType
,
INotificationChangeEvent
,
INotificationViewItem
}
from
'
vs/workbench/common/notifications
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
{
addClass
,
removeClass
}
from
'
vs/base/browser/dom
'
;
import
{
IDisposable
,
dispose
,
toDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
addClass
,
removeClass
,
isAncestor
}
from
'
vs/base/browser/dom
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
NotificationsList
}
from
'
vs/workbench/browser/parts/notifications/notificationsList
'
;
import
{
Dimension
}
from
'
vs/base/browser/builder
'
;
...
...
@@ -17,6 +17,8 @@ import { IPartService, Parts } from 'vs/workbench/services/part/common/partServi
import
{
Themable
}
from
'
vs/workbench/common/theme
'
;
import
{
IThemeService
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
widgetShadow
}
from
'
vs/platform/theme/common/colorRegistry
'
;
import
{
IWorkbenchEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
Severity
}
from
'
vs/platform/message/common/message
'
;
interface
INotificationToast
{
list
:
NotificationsList
;
...
...
@@ -28,6 +30,15 @@ export class NotificationsToasts extends Themable {
private
static
MAX_DIMENSIONS
=
new
Dimension
(
600
,
600
);
private
static
PURGE_TIMEOUT
:
{
[
severity
:
number
]:
number
}
=
(()
=>
{
const
intervals
=
Object
.
create
(
null
);
intervals
[
Severity
.
Info
]
=
8000
;
intervals
[
Severity
.
Warning
]
=
12000
;
intervals
[
Severity
.
Error
]
=
15000
;
return
intervals
;
})();
private
notificationsToastsContainer
:
HTMLElement
;
private
workbenchDimensions
:
Dimension
;
private
isNotificationsCenterVisible
:
boolean
;
...
...
@@ -38,7 +49,8 @@ export class NotificationsToasts extends Themable {
private
model
:
INotificationsModel
,
@
IInstantiationService
private
instantiationService
:
IInstantiationService
,
@
IPartService
private
partService
:
IPartService
,
@
IThemeService
themeService
:
IThemeService
@
IThemeService
themeService
:
IThemeService
,
@
IWorkbenchEditorService
private
editorService
:
IWorkbenchEditorService
)
{
super
(
themeService
);
...
...
@@ -85,7 +97,7 @@ export class NotificationsToasts extends Themable {
const
notificationToastContainer
=
document
.
createElement
(
'
div
'
);
addClass
(
notificationToastContainer
,
'
notification-toast
'
);
this
.
notificationsToastsContainer
.
appendChild
(
notificationToastContainer
);
itemDisposeables
.
push
(
{
dispose
:
()
=>
this
.
notificationsToastsContainer
.
removeChild
(
notificationToastContainer
)
}
);
itemDisposeables
.
push
(
toDisposable
(()
=>
this
.
notificationsToastsContainer
.
removeChild
(
notificationToastContainer
))
);
// Create toast with item and show
const
notificationList
=
this
.
instantiationService
.
createInstance
(
NotificationsList
,
notificationToastContainer
);
...
...
@@ -111,13 +123,24 @@ export class NotificationsToasts extends Themable {
this
.
removeToast
(
item
);
});
// Automatically hide notifications without buttons after a timeout
if
(
item
.
actions
.
primary
.
length
===
0
)
{
const
timeoutHandle
=
setTimeout
(()
=>
{
this
.
removeToast
(
item
);
},
NotificationsToasts
.
PURGE_TIMEOUT
[
item
.
severity
]);
itemDisposeables
.
push
(
toDisposable
(()
=>
clearTimeout
(
timeoutHandle
)));
}
// Theming
this
.
updateStyles
();
}
private
removeToast
(
item
:
INotificationViewItem
):
void
{
const
notificationToast
=
this
.
mapNotificationToToast
.
get
(
item
);
let
toastHasDOMFocus
=
false
;
if
(
notificationToast
)
{
toastHasDOMFocus
=
isAncestor
(
document
.
activeElement
,
notificationToast
.
container
);
// Listeners
dispose
(
notificationToast
.
disposeables
);
...
...
@@ -132,6 +155,14 @@ export class NotificationsToasts extends Themable {
// Layout
this
.
layout
(
this
.
workbenchDimensions
);
// Restore focus to editor if toast had focus
if
(
toastHasDOMFocus
)
{
const
editor
=
this
.
editorService
.
getActiveEditor
();
if
(
editor
)
{
editor
.
focus
();
}
}
}
private
removeToasts
():
void
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录