From cfd26ba4ea31a9a90abd66c671f48b29cbe27a5c Mon Sep 17 00:00:00 2001 From: Eugene Pankov Date: Fri, 28 Apr 2017 16:55:51 +0200 Subject: [PATCH] . --- app/main.js | 17 ++++++++++------ .../src/components/appRoot.component.pug | 20 +++++++++++++++++-- .../src/components/appRoot.component.scss | 12 +++++++++++ .../src/components/appRoot.component.ts | 3 --- terminus-core/src/configDefaults.yaml | 2 +- terminus-core/src/services/docking.service.ts | 6 ++++-- terminus-core/src/theme.scss | 4 ---- .../src/components/settingsTab.component.pug | 18 +++++++++++------ 8 files changed, 58 insertions(+), 24 deletions(-) diff --git a/app/main.js b/app/main.js index 836c736e..6009345e 100644 --- a/app/main.js +++ b/app/main.js @@ -88,13 +88,18 @@ setupWindowManagement = () => { }) electron.ipcMain.on('window-set-bounds', (event, bounds) => { - app.window.setBounds(bounds) + let actualBounds = app.window.getBounds() + actualBounds.x = bounds.x + actualBounds.y = bounds.y + app.window.setBounds(actualBounds) setTimeout(() => { - let actualBounds = app.window.getBounds() + actualBounds = app.window.getBounds() bounds.width += bounds.x - actualBounds.x bounds.height += bounds.y - actualBounds.y + bounds.x = actualBounds.x + bounds.y = actualBounds.y app.window.setBounds(bounds) - }, 500) + }, 100) }) electron.ipcMain.on('window-set-always-on-top', (event, flag) => { @@ -148,8 +153,8 @@ start = () => { height: 400, //icon: `${app.getAppPath()}/assets/img/icon.png`, title: 'Terminus', - minWidth: 300, - minHeight: 100, + minWidth: 400, + minHeight: 300, 'web-preferences': {'web-security': false}, //- background to avoid the flash of unstyled window backgroundColor: '#131d27', @@ -158,7 +163,7 @@ start = () => { } Object.assign(options, windowConfig.get('windowBoundaries')) - if ((configData.appearance || {}).useNativeFrame) { + if ((configData.appearance || {}).frame == 'native') { options.frame = true } else { if (platform == 'darwin') { diff --git a/terminus-core/src/components/appRoot.component.pug b/terminus-core/src/components/appRoot.component.pug index cda1195f..b12dabe4 100644 --- a/terminus-core/src/components/appRoot.component.pug +++ b/terminus-core/src/components/appRoot.component.pug @@ -1,9 +1,9 @@ -//title-bar(*ngIf='!config.store.appearance.useNativeFrame && config.store.appearance.dock == "off"') +title-bar(*ngIf='config.store.appearance.frame == "full" && config.store.appearance.dock == "off"') .content( [class.tabs-on-top]='config.store.appearance.tabsOnTop' ) - .tab-bar(*ngIf='app.tabs.length > 0') + .tab-bar .tabs tab-header( *ngFor='let tab of app.tabs; let idx = index', @@ -32,6 +32,22 @@ ) i.fa([class]='"fa fa-" + button.icon') + button.btn.btn-secondary.btn-minimize( + *ngIf='config.store.appearance.frame == "thin"', + (click)='hostApp.minimize()', + ) + i.fa.fa-window-minimize + button.btn.btn-secondary.btn-maximize( + *ngIf='config.store.appearance.frame == "thin"', + (click)='hostApp.toggleMaximize()', + ) + i.fa.fa-window-maximize + button.btn.btn-secondary.btn-close( + *ngIf='config.store.appearance.frame == "thin"', + (click)='hostApp.quit()', + ) + i.fa.fa-close + start-page(*ngIf='app.tabs.length == 0') tab-body( diff --git a/terminus-core/src/components/appRoot.component.scss b/terminus-core/src/components/appRoot.component.scss index fb3ca236..40bc2d33 100644 --- a/terminus-core/src/components/appRoot.component.scss +++ b/terminus-core/src/components/appRoot.component.scss @@ -44,6 +44,18 @@ $tab-border-radius: 4px; color: #aaa; border: none; border-radius: 0; + + &.btn-minimize { + margin-left: 10px; + } + + &.btn-minimize, &.btn-maximize { + font-size: 8px; + } + + &.btn-close { + font-size: 12px; + } } &>.tabs { diff --git a/terminus-core/src/components/appRoot.component.ts b/terminus-core/src/components/appRoot.component.ts index dae42779..6e10c77c 100644 --- a/terminus-core/src/components/appRoot.component.ts +++ b/terminus-core/src/components/appRoot.component.ts @@ -123,9 +123,6 @@ export class AppRootComponent { } } } - setImmediate(() => { - this.docking.dock() - }) } getLeftToolbarButtons (): IToolbarButton[] { return this.getToolbarButtons(false) } diff --git a/terminus-core/src/configDefaults.yaml b/terminus-core/src/configDefaults.yaml index f23eeb06..bad01a1f 100644 --- a/terminus-core/src/configDefaults.yaml +++ b/terminus-core/src/configDefaults.yaml @@ -4,4 +4,4 @@ appearance: dockFill: 50 tabsOnTop: true theme: 'Standard' - useNativeFrame: false + frame: 'thin' diff --git a/terminus-core/src/services/docking.service.ts b/terminus-core/src/services/docking.service.ts index b2d8ca88..add921da 100644 --- a/terminus-core/src/services/docking.service.ts +++ b/terminus-core/src/services/docking.service.ts @@ -52,8 +52,10 @@ export class DockingService { } this.hostApp.setAlwaysOnTop(true) - this.hostApp.unmaximize() - this.hostApp.setBounds(newBounds) + //this.hostApp.unmaximize() + setImmediate(() => { + this.hostApp.setBounds(newBounds) + }) } getCurrentScreen () { diff --git a/terminus-core/src/theme.scss b/terminus-core/src/theme.scss index 9eed8186..d2b68d2e 100644 --- a/terminus-core/src/theme.scss +++ b/terminus-core/src/theme.scss @@ -84,14 +84,10 @@ title-bar { app-root { - background: $body-bg; - &> .content { background: $body-bg2; .tab-bar { - background: $body-bg; - &>button { &:not(:hover):not(:active) { background: $body-bg2; diff --git a/terminus-settings/src/components/settingsTab.component.pug b/terminus-settings/src/components/settingsTab.component.pug index bdb744b2..acc5d22a 100644 --- a/terminus-settings/src/components/settingsTab.component.pug +++ b/terminus-settings/src/components/settingsTab.component.pug @@ -19,8 +19,8 @@ ngb-tabset.vertical(type='tabs') label Show tabs br div( - '[(ngModel)]'='config.store.appearance.tabsOnTop' - '(ngModelChange)'='config.save()' + '[(ngModel)]'='config.store.appearance.tabsOnTop', + (ngModelChange)='config.save()', ngbRadioGroup ) label.btn.btn-secondary @@ -40,22 +40,28 @@ ngb-tabset.vertical(type='tabs') label Window frame br div( - '[(ngModel)]'='config.store.appearance.useNativeFrame' + '[(ngModel)]'='config.store.appearance.frame' '(ngModelChange)'='config.save(); config.requestRestart()' ngbRadioGroup ) label.btn.btn-secondary input( type='radio', - [value]='true' + [value]='"native"' ) | Native label.btn.btn-secondary input( type='radio', - [value]='false' + [value]='"thin"' ) - | Custom + | Thin + label.btn.btn-secondary + input( + type='radio', + [value]='"full"' + ) + | Full small.form-text.text-muted Whether a custom window or an OS native window should be used .row