fixed touchbar activity indicators

上级 64955bfc
import * as glasstron from 'glasstron'
import { Subject, Observable, debounceTime } from 'rxjs'
import { BrowserWindow, app, ipcMain, Rectangle, Menu, screen, BrowserWindowConstructorOptions, TouchBar } from 'electron'
import { BrowserWindow, app, ipcMain, Rectangle, Menu, screen, BrowserWindowConstructorOptions, TouchBar, nativeImage } from 'electron'
import ElectronConfig = require('electron-config')
import * as os from 'os'
import * as path from 'path'
......@@ -28,6 +28,8 @@ abstract class GlasstronWindow extends BrowserWindow {
const macOSVibrancyType = process.platform === 'darwin' ? compareVersions.compare(macOSRelease().version, '10.14', '>=') ? 'fullscreen-ui' : 'dark' : null
const activityIcon = nativeImage.createFromPath(`${app.getAppPath()}/assets/activity.png`)
export class Window {
ready: Promise<void>
private visible = new Subject<boolean>()
......@@ -367,7 +369,10 @@ export class Window {
})
ipcMain.on('window-set-touch-bar', (_event, segments, selectedIndex) => {
this.touchBarControl.segments = segments
this.touchBarControl.segments = segments.map(s => ({
label: s.label,
icon: s.hasActivity ? activityIcon : undefined,
})
this.touchBarControl.selectedIndex = selectedIndex
})
......
import { Injectable } from '@angular/core'
import { App, IpcRenderer, Shell, Dialog, Clipboard, GlobalShortcut, Screen, Remote, AutoUpdater, TouchBar, BrowserWindow, Menu, MenuItem, NativeImage, PowerSaveBlocker } from 'electron'
import { App, IpcRenderer, Shell, Dialog, Clipboard, GlobalShortcut, Screen, Remote, AutoUpdater, TouchBar, BrowserWindow, Menu, MenuItem, PowerSaveBlocker } from 'electron'
import * as remote from '@electron/remote'
export interface MessageBoxResponse {
......@@ -15,7 +15,6 @@ export class ElectronService {
dialog: Dialog
clipboard: Clipboard
globalShortcut: GlobalShortcut
nativeImage: typeof NativeImage
screen: Screen
remote: Remote
process: any
......@@ -38,7 +37,6 @@ export class ElectronService {
this.screen = remote.screen
this.dialog = remote.dialog
this.globalShortcut = remote.globalShortcut
this.nativeImage = remote.nativeImage
this.autoUpdater = remote.autoUpdater
this.powerSaveBlocker = remote.powerSaveBlocker
this.TouchBar = remote.TouchBar
......
import { ipcRenderer, NativeImage } from 'electron'
import { ipcRenderer } from 'electron'
import { Injectable, NgZone } from '@angular/core'
import { AppService, HostAppService, Platform } from 'tabby-core'
import { ElectronService } from '../services/electron.service'
/** @hidden */
@Injectable({ providedIn: 'root' })
export class TouchbarService {
private activityIcon: NativeImage
private constructor (
private app: AppService,
private hostApp: HostAppService,
private electron: ElectronService,
private zone: NgZone,
) {
if (this.hostApp.platform !== Platform.macOS) {
......@@ -20,9 +16,6 @@ export class TouchbarService {
app.tabsChanged$.subscribe(() => this.update())
app.activeTabChange$.subscribe(() => this.update())
const activityIconPath = `${electron.app.getAppPath()}/assets/activity.png`
this.activityIcon = this.electron.nativeImage.createFromPath(activityIconPath)
app.tabOpened$.subscribe(tab => {
tab.titleChange$.subscribe(() => this.update())
tab.activity$.subscribe(() => this.update())
......@@ -40,7 +33,7 @@ export class TouchbarService {
const tabSegments = this.app.tabs.map(tab => ({
label: this.shortenTitle(tab.title),
icon: this.app.activeTab !== tab && tab.hasActivity ? this.activityIcon : undefined,
hasActivity: this.app.activeTab !== tab && tab.hasActivity,
}))
ipcRenderer.send('window-set-touch-bar', tabSegments, this.app.activeTab ? this.app.tabs.indexOf(this.app.activeTab) : undefined)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册