From f10e7ac224393ec5e18e996abd73a0558d05945d Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 18 Jun 2019 13:59:13 +0100 Subject: [PATCH 1/3] Fix reference to main window when setting Electron window icon This fixes the fallback path which sets the Electron window icon to the default icon in case there's no data URI based icon coming content. This is true immediately after startup, for example. Part of https://github.com/vector-im/riot-web/issues/9897 --- electron_app/src/tray.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron_app/src/tray.js b/electron_app/src/tray.js index bd07d7d433..61e059723d 100644 --- a/electron_app/src/tray.js +++ b/electron_app/src/tray.js @@ -65,7 +65,7 @@ exports.create = function(config) { global.mainWindow.webContents.on('page-favicon-updated', async function(ev, favicons) { if (!favicons || favicons.length <= 0 || !favicons[0].startsWith('data:')) { if (lastFavicon !== null) { - win.setIcon(defaultIcon); + global.mainWindow.setIcon(defaultIcon); trayIcon.setImage(defaultIcon); lastFavicon = null; } From 292427c275cfad9458be23b3326fd18d9437c387 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 18 Jun 2019 16:12:38 +0100 Subject: [PATCH 2/3] Move default Electron icons outside asar Electron doesn't seem to want to load icons from within `asar`s, so this changes the default icons (used for window and tray) so that they are just regular files on disk and updates the reference to match. Part of https://github.com/vector-im/riot-web/issues/9897 --- electron_app/src/electron-main.js | 5 ++++- package.json | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/electron_app/src/electron-main.js b/electron_app/src/electron-main.js index 9c75123ff2..8b837caec2 100644 --- a/electron_app/src/electron-main.js +++ b/electron_app/src/electron-main.js @@ -295,7 +295,10 @@ app.on('ready', () => { console.log('No update_base_url is defined: auto update is disabled'); } - const iconPath = `${__dirname}/../img/riot.${process.platform === 'win32' ? 'ico' : 'png'}`; + // It's important to call `path.join` so we don't end up with the packaged + // asar in the final path. + const iconFile = `riot.${process.platform === 'win32' ? 'ico' : 'png'}`; + const iconPath = path.join(__dirname, "..", "..", "img", iconFile); // Load the previous window state with fallback to defaults const mainWindowState = windowStateKeeper({ diff --git a/package.json b/package.json index 96458d7bf3..531f5d4a05 100644 --- a/package.json +++ b/package.json @@ -156,10 +156,10 @@ "electronVersion": "4.2.4", "files": [ "node_modules/**", - "src/**", - "img/**" + "src/**" ], "extraResources": [ + { "from": "electron_app/img", "to": "img" }, "webapp/**/*", "origin_migrator/**/*" ], From f3bfb082803809690062adac23c9324171923cfd Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 18 Jun 2019 16:19:26 +0100 Subject: [PATCH 3/3] Update Electron's runtime PNG icon to match others This runtime PNG icon (the default window and tray icon) was not updated to remove the white background when we last changed the branding. This copies a 265 px PNG from elsewhere to ensure it matches. Part of https://github.com/vector-im/riot-web/issues/9897 --- electron_app/img/riot.png | Bin 5710 -> 13098 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/electron_app/img/riot.png b/electron_app/img/riot.png index aacfc1a8a50c135e64a02f73fe580a38a522f88d..f52d02c88bb0a6b3ce833bc232a744f4c1a6cf73 100644 GIT binary patch literal 13098 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 PegVizDoNCd83q3jy*SgA literal 5710 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 WpB+0H-F+a40jjUGlxh_%-~AtDrUaG%