Skip to content

Commit

Permalink
Try catch electron current window getting operation
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexandreSi committed Sep 25, 2024
1 parent 9b9f6ab commit 322da68
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 30 deletions.
19 changes: 11 additions & 8 deletions Extensions/AdvancedWindow/electron-advancedwindowtools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,18 @@ namespace gdjs {
export namespace evtTools {
export namespace advancedWindow {
const getElectronBrowserWindow = (runtimeScene: gdjs.RuntimeScene) => {
const electronRemote = runtimeScene
.getGame()
.getRenderer()
.getElectronRemote();
if (electronRemote) {
return electronRemote.getCurrentWindow();
try {
const electronRemote = runtimeScene
.getGame()
.getRenderer()
.getElectronRemote();
if (electronRemote) {
return electronRemote.getCurrentWindow();
}
return null;
} catch (error) {
return null;
}

return null;
};

export const focus = function (
Expand Down
47 changes: 25 additions & 22 deletions GDJS/Runtime/pixi-renderers/runtimegame-pixi-renderer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -358,17 +358,16 @@ namespace gdjs {
setWindowSize(width: float, height: float): void {
const remote = this.getElectronRemote();
if (remote) {
// Use Electron BrowserWindow API
const browserWindow = remote.getCurrentWindow();
if (browserWindow) {
try {
try {
if (browserWindow) {
browserWindow.setContentSize(width, height);
} catch (error) {
logger.error(
`Window size setting to width ${width} and height ${height} failed. See error:`,
error
);
}
} catch (error) {
logger.error(
`Window size setting to width ${width} and height ${height} failed. See error:`,
error
);
}
} else {
logger.warn("Window size can't be changed on this platform.");
Expand All @@ -381,16 +380,16 @@ namespace gdjs {
centerWindow() {
const remote = this.getElectronRemote();
if (remote) {
// Use Electron BrowserWindow API
const browserWindow = remote.getCurrentWindow();
if (browserWindow) {
try {
try {
if (browserWindow) {
browserWindow.center();
} catch (error) {
logger.error('Window centering failed. See error:', error);
}
} catch (error) {
logger.error('Window centering failed. See error:', error);
}
} else {
logger.warn("Window can't be centered on this platform.");
}
}

Expand All @@ -405,17 +404,16 @@ namespace gdjs {
this._isFullscreen = !!enable;
const remote = this.getElectronRemote();
if (remote) {
// Use Electron BrowserWindow API
const browserWindow = remote.getCurrentWindow();
if (browserWindow) {
try {
try {
if (browserWindow) {
browserWindow.setFullScreen(this._isFullscreen);
} catch (error) {
logger.error(
`Full screen setting to ${this._isFullscreen} failed. See error:`,
error
);
}
} catch (error) {
logger.error(
`Full screen setting to ${this._isFullscreen} failed. See error:`,
error
);
}
} else {
// Use HTML5 Fullscreen API
Expand Down Expand Up @@ -468,7 +466,12 @@ namespace gdjs {
isFullScreen(): boolean {
const remote = this.getElectronRemote();
if (remote) {
return remote.getCurrentWindow().isFullScreen();
try {
return remote.getCurrentWindow().isFullScreen();
} catch (error) {
logger.error(`Full screen detection failed. See error:`, error);
return false;
}
}

// Height check is used to detect user triggered full screen (for example F11 shortcut).
Expand Down

0 comments on commit 322da68

Please sign in to comment.