fix: should use fullscreen to control where to place macos window controls (#6351)

This commit is contained in:
pengx17
2024-03-28 03:40:46 +00:00
parent 4e7652f108
commit e53744b740
7 changed files with 53 additions and 16 deletions

View File

@@ -104,9 +104,8 @@ async function createWindow(additionalArguments: string[]) {
logger.info('main window is ready to show');
if (browserWindow.isMaximized() || browserWindow.isFullScreen()) {
uiSubjects.onMaximized$.next(true);
}
uiSubjects.onMaximized$.next(browserWindow.isMaximized());
uiSubjects.onFullScreen$.next(browserWindow.isFullScreen());
handleWebContentsResize().catch(logger.error);
});
@@ -143,21 +142,26 @@ async function createWindow(additionalArguments: string[]) {
browserWindow.setSize(size[0], size[1]);
});
uiSubjects.onMaximized$.next(false);
uiSubjects.onFullScreen$.next(false);
});
browserWindow.on('maximize', () => {
uiSubjects.onMaximized$.next(true);
});
// full-screen == maximized in UI on windows
browserWindow.on('enter-full-screen', () => {
uiSubjects.onMaximized$.next(true);
});
browserWindow.on('unmaximize', () => {
uiSubjects.onMaximized$.next(false);
});
// full-screen == maximized in UI on windows
browserWindow.on('enter-full-screen', () => {
uiSubjects.onFullScreen$.next(true);
});
browserWindow.on('leave-full-screen', () => {
uiSubjects.onFullScreen$.next(false);
});
/**
* URL for main window.
*/

View File

@@ -11,4 +11,10 @@ export const uiEvents = {
sub.unsubscribe();
};
},
onFullScreen: (fn: (fullScreen: boolean) => void) => {
const sub = uiSubjects.onFullScreen$.subscribe(fn);
return () => {
sub.unsubscribe();
};
},
} satisfies Record<string, MainEventRegister>;

View File

@@ -20,6 +20,10 @@ export const uiHandlers = {
const window = await getMainWindow();
return window?.isMaximized();
},
isFullScreen: async () => {
const window = await getMainWindow();
return window?.isFullScreen();
},
handleThemeChange: async (_, theme: (typeof nativeTheme)['themeSource']) => {
nativeTheme.themeSource = theme;
},

View File

@@ -2,4 +2,5 @@ import { Subject } from 'rxjs';
export const uiSubjects = {
onMaximized$: new Subject<boolean>(),
onFullScreen$: new Subject<boolean>(),
};