Call BrowserWindow.isMaximized and related events from renderer

This commit is contained in:
Sqaaakoi 2024-03-09 21:31:43 +13:00
parent e63cff7a52
commit b84d57d1d2
No known key found for this signature in database
4 changed files with 29 additions and 1 deletions

View file

@ -93,6 +93,8 @@ handle(IpcEvents.MAXIMIZE, e => {
}
});
handleSync(IpcEvents.IS_MAXIMIZED, () => mainWin.isMaximized());
handle(IpcEvents.SPELLCHECK_SET_LANGUAGES, (_, languages: string[]) => {
const ses = session.defaultSession;

View file

@ -359,6 +359,14 @@ function initSpellCheck(win: BrowserWindow) {
win.webContents.send(IpcEvents.SPELLCHECK_RESULT, data.misspelledWord, data.dictionarySuggestions);
});
}
function initMaximizedHook(win: BrowserWindow) {
win.on("maximize", () => {
win.webContents.send(IpcEvents.MAXIMIZED, true);
});
win.on("unmaximize", () => {
win.webContents.send(IpcEvents.MAXIMIZED, false);
});
}
function createMainWindow() {
// Clear up previous settings listeners
@ -425,6 +433,7 @@ function createMainWindow() {
makeLinksOpenExternally(win);
initSettingsListeners(win);
initSpellCheck(win);
initMaximizedHook(win);
win.webContents.setUserAgent(UserAgent);

View file

@ -19,6 +19,14 @@ ipcRenderer.on(IpcEvents.SPELLCHECK_RESULT, (_, w: string, s: string[]) => {
spellCheckCallbacks.forEach(cb => cb(w, s));
});
type MaximizedCallback = (isMaximized: boolean) => void;
const maximizedCallbacks = new Set<MaximizedCallback>();
ipcRenderer.on(IpcEvents.MAXIMIZED, (_, v: boolean) => {
maximizedCallbacks.forEach(cb => cb(v));
});
export const VesktopNative = {
app: {
relaunch: () => invoke<void>(IpcEvents.RELAUNCH),
@ -54,7 +62,14 @@ export const VesktopNative = {
focus: () => invoke<void>(IpcEvents.FOCUS),
close: (key?: string) => invoke<void>(IpcEvents.CLOSE, key),
minimize: () => invoke<void>(IpcEvents.MINIMIZE),
maximize: () => invoke<void>(IpcEvents.MAXIMIZE)
maximize: () => invoke<void>(IpcEvents.MAXIMIZE),
isMaximized: () => sendSync<boolean>(IpcEvents.IS_MAXIMIZED),
onMaximized(cb: MaximizedCallback) {
maximizedCallbacks.add(cb);
},
offMaximized(cb: MaximizedCallback) {
maximizedCallbacks.delete(cb);
}
},
capturer: {
getLargeThumbnail: (id: string) => invoke<string>(IpcEvents.CAPTURER_GET_LARGE_THUMBNAIL, id)

View file

@ -18,6 +18,8 @@ export const enum IpcEvents {
FOCUS = "VCD_FOCUS",
MINIMIZE = "VCD_MINIMIZE",
MAXIMIZE = "VCD_MAXIMIZE",
IS_MAXIMIZED = "VCD_IS_MAXIMIZED",
MAXIMIZED = "VCD_MAXIMIZED",
SHOW_ITEM_IN_FOLDER = "VCD_SHOW_ITEM_IN_FOLDER",
GET_SETTINGS = "VCD_GET_SETTINGS",