diff --git a/tabby-core/src/components/appRoot.component.pug b/tabby-core/src/components/appRoot.component.pug index 760f2977..c3480079 100644 --- a/tabby-core/src/components/appRoot.component.pug +++ b/tabby-core/src/components/appRoot.component.pug @@ -1,21 +1,21 @@ title-bar( - *ngIf='ready && !hostWindow.isFullscreen && config.store.appearance.frame == "full" && config.store.appearance.dock == "off"', - (dblclick)='hostWindow.toggleMaximize()', + *ngIf='ready && !hostWindow.isFullscreen && config.store.appearance.dock == "off" && isTitleBarNeeded()', + (dblclick)='toggleMaximize()', [hideControls]='hostApp.platform !== Platform.Linux && !hostWindow.isFullscreen', [class.inset]='hostApp.platform == Platform.macOS && !hostWindow.isFullscreen' ) .content( *ngIf='ready', - [class.tabs-on-top]='config.store.appearance.tabsLocation == "top" || config.store.appearance.tabsLocation == "left"', + [class.tabs-on-top]='config.store.appearance.tabsLocation == "top" || config.store.appearance.tabsLocation == "left" || config.store.appearance.tabsLocation == "right"', [class.tabs-on-left]='hasVerticalTabs() && config.store.appearance.tabsLocation == "left"', - [class.tabs-titlebar-enabled]='config.store.appearance.frame == "full"', + [class.tabs-titlebar-enabled]='isTitleBarNeeded()', [class.tabs-on-right]='hasVerticalTabs() && config.store.appearance.tabsLocation == "right"', ) .tab-bar( *ngIf='!hostWindow.isFullscreen || config.store.appearance.tabsInFullscreen', [class.tab-bar-no-controls-overlay]='hostApp.platform == Platform.macOS', - (dblclick)='hostWindow.toggleMaximize()' + (dblclick)='!isTitleBarNeeded() && toggleMaximize()' ) .inset.background(*ngIf='hostApp.platform == Platform.macOS \ && !hostWindow.isFullscreen \ @@ -35,7 +35,7 @@ title-bar( [@animateTab]='{value: "in", params: {size: targetTabSize}}', [@.disabled]='hasVerticalTabs() || !config.store.accessibility.animations', (click)='app.selectTab(tab)', - [class.fully-draggable]='hostApp.platform != Platform.macOS' + [class.fully-draggable]='hostApp.platform !== Platform.macOS' ) .btn-group.background @@ -64,7 +64,11 @@ title-bar( (transfersChange)='onTransfersChange()' ) - .drag-space.background([class.persistent]='config.store.appearance.frame == "thin"') + .btn-space.background( + [class.persistent]='config.store.appearance.frame == "thin"', + [class.drag]='config.store.appearance.frame == "thin" \ + && ((config.store.appearance.tabsLocation !== "left" && config.store.appearance.tabsLocation !== "right") || hostApp.platform !== Platform.macOS)' + ) .btn-group.background .d-flex( @@ -84,7 +88,9 @@ title-bar( window-controls.background( *ngIf='config.store.appearance.frame == "thin" \ - && (hostApp.platform == Platform.Linux)', + && config.store.appearance.tabsLocation !== "left" \ + && config.store.appearance.tabsLocation !== "right" \ + && hostApp.platform == Platform.Linux', ) div.window-controls-spacer( diff --git a/tabby-core/src/components/appRoot.component.scss b/tabby-core/src/components/appRoot.component.scss index 1ec365a7..511e994e 100644 --- a/tabby-core/src/components/appRoot.component.scss +++ b/tabby-core/src/components/appRoot.component.scss @@ -62,7 +62,7 @@ $tab-border-radius: 4px; } } - .drag-space { + .btn-space { flex: auto; } @@ -126,15 +126,18 @@ $tab-border-radius: 4px; min-width: 0; } - &>.drag-space { + &>.btn-space { min-width: 1px; flex: 1 0 1%; - -webkit-app-region: drag; .tabs-on-top & { margin-top: 2px; // for window resizing } + &.drag { + -webkit-app-region: drag; + } + &.persistent { // min-width: 72px; // 2 x 36 px height, ie 2 squares // Given WCO on Windows, the min-width of the window buttons is about 138px. diff --git a/tabby-core/src/components/appRoot.component.ts b/tabby-core/src/components/appRoot.component.ts index 9b13013e..8f781711 100644 --- a/tabby-core/src/components/appRoot.component.ts +++ b/tabby-core/src/components/appRoot.component.ts @@ -240,4 +240,19 @@ export class AppRootComponent { return (await this.commands.getCommands({ tab: this.app.activeTab ?? undefined })) .filter(x => x.locations?.includes(aboveZero ? CommandLocation.RightToolbar : CommandLocation.LeftToolbar)) } + + toggleMaximize (): void { + this.hostWindow.toggleMaximize() + } + + protected isTitleBarNeeded (): boolean { + return ( + this.config.store.appearance.frame === 'full' + || + this.hostApp.platform !== Platform.macOS + && this.config.store.appearance.frame === 'thin' + && this.config.store.appearance.tabsLocation !== 'top' + && this.config.store.appearance.tabsLocation !== 'bottom' + ) + } }