@@ -13,7 +13,7 @@ import { IFileService } from 'vs/platform/files/common/files';
1313import { toResource , IUntitledTextResourceEditorInput , SideBySideEditor , pathsToEditors } from 'vs/workbench/common/editor' ;
1414import { IEditorService , IResourceEditorInputType } from 'vs/workbench/services/editor/common/editorService' ;
1515import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry' ;
16- import { IOpenFileRequest , IWindowsConfiguration , getTitleBarStyle , IAddFoldersRequest , INativeRunActionInWindowRequest , INativeRunKeybindingInWindowRequest , INativeOpenFileRequest } from 'vs/platform/windows/common/windows' ;
16+ import { WindowMinimumSize , IOpenFileRequest , IWindowsConfiguration , getTitleBarStyle , IAddFoldersRequest , INativeRunActionInWindowRequest , INativeRunKeybindingInWindowRequest , INativeOpenFileRequest } from 'vs/platform/windows/common/windows' ;
1717import { ITitleService } from 'vs/workbench/services/title/common/titleService' ;
1818import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService' ;
1919import { applyZoom } from 'vs/platform/windows/electron-sandbox/window' ;
@@ -54,7 +54,7 @@ import { INativeHostService } from 'vs/platform/native/electron-sandbox/native';
5454import { posix , dirname } from 'vs/base/common/path' ;
5555import { getBaseLabel } from 'vs/base/common/labels' ;
5656import { ITunnelService , extractLocalHostUriMetaDataForPortMapping } from 'vs/platform/remote/common/tunnel' ;
57- import { IWorkbenchLayoutService , Parts } from 'vs/workbench/services/layout/browser/layoutService' ;
57+ import { IWorkbenchLayoutService , Parts , positionFromString , Position } from 'vs/workbench/services/layout/browser/layoutService' ;
5858import { IHostService } from 'vs/workbench/services/host/browser/host' ;
5959import { IWorkingCopyService , WorkingCopyCapabilities } from 'vs/workbench/services/workingCopy/common/workingCopyService' ;
6060import { AutoSaveMode , IFilesConfigurationService } from 'vs/workbench/services/filesConfiguration/common/filesConfigurationService' ;
@@ -266,6 +266,12 @@ export class NativeWindow extends Disposable {
266266 ) ( e => this . onDidChangeMaximized ( e ) ) ) ;
267267
268268 this . onDidChangeMaximized ( this . environmentService . configuration . maximized ?? false ) ;
269+
270+ // Detect panel position to determine minimum width
271+ this . _register ( this . layoutService . onPanelPositionChange ( pos => {
272+ this . onDidPanelPositionChange ( positionFromString ( pos ) ) ;
273+ } ) ) ;
274+ this . onDidPanelPositionChange ( this . layoutService . getPanelPosition ( ) ) ;
269275 }
270276
271277 private updateDocumentEdited ( isDirty = this . workingCopyService . hasDirty ) : void {
@@ -280,6 +286,22 @@ export class NativeWindow extends Disposable {
280286 this . layoutService . updateWindowMaximizedState ( maximized ) ;
281287 }
282288
289+ private getWindowMinimumWidth ( panelPosition : Position = this . layoutService . getPanelPosition ( ) ) : number {
290+ // if panel is on the side, then return the larger minwidth
291+ const panelOnSide = panelPosition === Position . LEFT || panelPosition === Position . RIGHT ;
292+ if ( panelOnSide ) {
293+ return WindowMinimumSize . WIDTH_WITH_VERTICAL_PANEL ;
294+ }
295+ else {
296+ return WindowMinimumSize . WIDTH ;
297+ }
298+ }
299+
300+ private onDidPanelPositionChange ( pos : Position ) : void {
301+ const minWidth = this . getWindowMinimumWidth ( pos ) ;
302+ this . nativeHostService . setMinimumSize ( minWidth , undefined ) ;
303+ }
304+
283305 private onDidVisibleEditorsChange ( ) : void {
284306
285307 // Close when empty: check if we should close the window based on the setting
0 commit comments