diff --git a/src/shared/windowCapabilities.ts b/src/shared/windowCapabilities.ts index c0d0df7..721b582 100644 --- a/src/shared/windowCapabilities.ts +++ b/src/shared/windowCapabilities.ts @@ -76,6 +76,13 @@ function resolveLinuxDisplayServer( } export function resolveWindowCapabilities(options: WindowCapabilityResolutionOptions): WindowCapabilities { + if (options.platform === 'win32') { + return { + ...DEFAULT_WINDOW_CAPABILITIES, + useNativeDragRegions: true, + } + } + if (options.platform !== 'linux') { return { ...DEFAULT_WINDOW_CAPABILITIES } } diff --git a/test/renderer-helpers.test.ts b/test/renderer-helpers.test.ts index 416f312..7688e6b 100644 --- a/test/renderer-helpers.test.ts +++ b/test/renderer-helpers.test.ts @@ -2625,6 +2625,22 @@ test('resolveWindowCapabilities leaves non-Linux platforms on the full-featured ) }) +test('resolveWindowCapabilities uses native drag regions on Windows while preserving geometry controls', () => { + assert.deepEqual( + resolveWindowCapabilities({ + platform: 'win32', + argv: [], + env: {}, + }), + { + displayServer: 'other', + useNativeDragRegions: true, + supportsProgrammaticReposition: true, + supportsGeometryPersistence: true, + }, + ) +}) + test('Wayland window controls use native drag regions and omit unsupported reposition/geometry paths', async () => { const toolbarSource = await readFile(join(process.cwd(), 'src', 'renderer', 'components', 'Toolbar.tsx'), 'utf8') const appSource = await readFile(join(process.cwd(), 'src', 'renderer', 'App.tsx'), 'utf8')