fix: handle a nil backgroundColor in win.getBackgroundColor() (#28188)

* fix: handle a nil backgroundColor in win.getBackgroundColor()

* spec: add crash case

* fix: update to fix native_views transparent color

* chore: fix lint

Co-authored-by: Samuel Attard <sattard@slack-corp.com>
Co-authored-by: Samuel Attard <sam@electronjs.org>
This commit is contained in:
trop[bot]
2021-03-15 11:45:19 +09:00
committed by GitHub
parent 23075f8620
commit 8397716dab
3 changed files with 22 additions and 3 deletions

View File

@@ -1197,8 +1197,10 @@ void NativeWindowMac::SetBackgroundColor(SkColor color) {
}
SkColor NativeWindowMac::GetBackgroundColor() {
return skia::CGColorRefToSkColor(
[[[window_ contentView] layer] backgroundColor]);
CGColorRef color = [[[window_ contentView] layer] backgroundColor];
if (!color)
return SK_ColorTRANSPARENT;
return skia::CGColorRefToSkColor(color);
}
void NativeWindowMac::SetHasShadow(bool has_shadow) {

View File

@@ -956,7 +956,10 @@ bool NativeWindowViews::IsTabletMode() const {
}
SkColor NativeWindowViews::GetBackgroundColor() {
return root_view_->background()->get_color();
auto* background = root_view_->background();
if (!background)
return SK_ColorTRANSPARENT;
return background->get_color();
}
void NativeWindowViews::SetBackgroundColor(SkColor background_color) {

View File

@@ -0,0 +1,14 @@
const { app, BrowserWindow } = require('electron');
function createWindow () {
// Create the browser window.
const mainWindow = new BrowserWindow({
transparent: true
});
mainWindow.getBackgroundColor();
}
app.on('ready', () => {
createWindow();
setTimeout(() => app.quit());
});