Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
后端镜像
Tabby
提交
a725d25e
T
Tabby
项目概览
后端镜像
/
Tabby
通知
27
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Tabby
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
a725d25e
编写于
7月 17, 2021
作者:
E
Eugene Pankov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
web: added proper platform detection and hotkey handling
上级
4e42dfd4
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
50 addition
and
4 deletion
+50
-4
tabby-core/src/services/hotkeys.service.ts
tabby-core/src/services/hotkeys.service.ts
+6
-0
tabby-settings/src/components/windowSettingsTab.component.pug
...y-settings/src/components/windowSettingsTab.component.pug
+11
-0
tabby-web/package.json
tabby-web/package.json
+1
-0
tabby-web/src/config.ts
tabby-web/src/config.ts
+10
-0
tabby-web/src/index.ts
tabby-web/src/index.ts
+3
-1
tabby-web/src/services/hostApp.service.ts
tabby-web/src/services/hostApp.service.ts
+3
-1
tabby-web/src/services/hostWindow.service.ts
tabby-web/src/services/hostWindow.service.ts
+11
-2
tabby-web/yarn.lock
tabby-web/yarn.lock
+5
-0
未找到文件。
tabby-core/src/services/hotkeys.service.ts
浏览文件 @
a725d25e
...
...
@@ -3,6 +3,7 @@ import { Observable, Subject } from 'rxjs'
import
{
HotkeyDescription
,
HotkeyProvider
}
from
'
../api/hotkeyProvider
'
import
{
stringifyKeySequence
,
EventData
}
from
'
./hotkeys.util
'
import
{
ConfigService
}
from
'
./config.service
'
import
{
HostAppService
,
Platform
}
from
'
../api/hostApp
'
import
{
deprecate
}
from
'
util
'
export
interface
PartialHotkeyMatch
{
...
...
@@ -35,6 +36,7 @@ export class HotkeysService {
private
zone
:
NgZone
,
private
config
:
ConfigService
,
@
Inject
(
HotkeyProvider
)
private
hotkeyProviders
:
HotkeyProvider
[],
hostApp
:
HostAppService
,
)
{
const
events
=
[
'
keydown
'
,
'
keyup
'
]
events
.
forEach
(
event
=>
{
...
...
@@ -43,6 +45,10 @@ export class HotkeysService {
this
.
pushKeystroke
(
event
,
nativeEvent
)
this
.
processKeystrokes
()
this
.
emitKeyEvent
(
nativeEvent
)
if
(
hostApp
.
platform
===
Platform
.
Web
)
{
nativeEvent
.
preventDefault
()
nativeEvent
.
stopPropagation
()
}
}
})
})
...
...
tabby-settings/src/components/windowSettingsTab.component.pug
浏览文件 @
a725d25e
...
...
@@ -9,6 +9,17 @@ h3.mb-3 Window
)
option(*ngFor='let theme of themes', [ngValue]='theme.name') {{theme.name}}
.form-line(*ngIf='hostApp.platform === Platform.Web')
.header
.title Ask before closing the browser tab
.description Prevents accidental closing
toggle(
[(ngModel)]='config.store.web.preventAccidentalTabClosure',
(ngModelChange)='saveConfiguration()',
)
.form-line(*ngIf='platform.supportsWindowControls')
.header
.title(*ngIf='hostApp.platform !== Platform.macOS') Acrylic background
...
...
tabby-web/package.json
浏览文件 @
a725d25e
...
...
@@ -22,6 +22,7 @@
"devDependencies"
:
{
"@vaadin/vaadin-context-menu"
:
"^5.0.0"
,
"bootstrap"
:
"^4.1.3"
,
"bowser"
:
"^2.11.0"
,
"copy-text-to-clipboard"
:
"^3.0.1"
}
}
tabby-web/src/config.ts
0 → 100644
浏览文件 @
a725d25e
import
{
ConfigProvider
}
from
'
tabby-core
'
/** @hidden */
export
class
WebConfigProvider
extends
ConfigProvider
{
defaults
=
{
web
:
{
preventAccidentalTabClosure
:
true
,
},
}
}
tabby-web/src/index.ts
浏览文件 @
a725d25e
import
{
NgModule
}
from
'
@angular/core
'
import
{
CommonModule
}
from
'
@angular/common
'
import
{
HostAppService
,
HostWindowService
,
LogService
,
PlatformService
,
UpdaterService
}
from
'
tabby-core
'
import
{
ConfigProvider
,
HostAppService
,
HostWindowService
,
LogService
,
PlatformService
,
UpdaterService
}
from
'
tabby-core
'
import
{
WebPlatformService
}
from
'
./platform
'
import
{
ConsoleLogService
}
from
'
./services/log.service
'
...
...
@@ -8,6 +8,7 @@ import { NullUpdaterService } from './services/updater.service'
import
{
WebHostWindow
}
from
'
./services/hostWindow.service
'
import
{
WebHostApp
}
from
'
./services/hostApp.service
'
import
{
MessageBoxModalComponent
}
from
'
./components/messageBoxModal.component
'
import
{
WebConfigProvider
}
from
'
./config
'
import
'
./styles.scss
'
...
...
@@ -21,6 +22,7 @@ import './styles.scss'
{
provide
:
UpdaterService
,
useClass
:
NullUpdaterService
},
{
provide
:
HostWindowService
,
useClass
:
WebHostWindow
},
{
provide
:
HostAppService
,
useClass
:
WebHostApp
},
{
provide
:
ConfigProvider
,
useClass
:
WebConfigProvider
,
multi
:
true
},
],
declarations
:
[
MessageBoxModalComponent
,
...
...
tabby-web/src/services/hostApp.service.ts
浏览文件 @
a725d25e
import
Bowser
from
'
bowser
'
import
{
Injectable
,
Injector
}
from
'
@angular/core
'
import
{
HostAppService
,
Platform
}
from
'
tabby-core
'
...
...
@@ -8,7 +9,8 @@ export class WebHostApp extends HostAppService {
}
get
configPlatform
():
Platform
{
return
Platform
.
Windows
// TODO
const
os
=
Bowser
.
parse
(
window
.
navigator
.
userAgent
).
os
return
Platform
[
os
.
name
??
'
Windows
'
]
??
Platform
.
Windows
}
// Needed for injector metadata
...
...
tabby-web/src/services/hostWindow.service.ts
浏览文件 @
a725d25e
import
{
Injectable
}
from
'
@angular/core
'
import
{
HostWindowService
}
from
'
tabby-core
'
import
{
ConfigService
,
HostWindowService
}
from
'
tabby-core
'
@
Injectable
({
providedIn
:
'
root
'
})
export
class
WebHostWindow
extends
HostWindowService
{
get
isFullscreen
():
boolean
{
return
!!
document
.
fullscreenElement
}
constructor
()
{
constructor
(
config
:
ConfigService
,
)
{
super
()
this
.
windowShown
.
next
()
this
.
windowFocused
.
next
()
window
.
addEventListener
(
'
beforeunload
'
,
(
event
)
=>
{
if
(
config
.
store
.
web
.
preventAccidentalTabClosure
)
{
event
.
preventDefault
()
event
.
returnValue
=
'
Are you sure you want to close Tabby? You can disable this prompt in Settings -> Window.
'
}
}
}
reload
():
void
{
...
...
tabby-web/yarn.lock
浏览文件 @
a725d25e
...
...
@@ -160,6 +160,11 @@ bootstrap@^4.1.3:
resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.6.0.tgz#97b9f29ac98f98dfa43bf7468262d84392552fd7"
integrity sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==
bowser@^2.11.0:
version "2.11.0"
resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f"
integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==
copy-text-to-clipboard@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz#8cbf8f90e0a47f12e4a24743736265d157bce69c"
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录