From 52525ef6bc2a4a06df621f645a5cf1a229ce8204 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 16 Jun 2016 14:57:07 -0700 Subject: [PATCH 1/3] Add failing spec for icon progress crash --- spec/api-browser-window-spec.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/spec/api-browser-window-spec.js b/spec/api-browser-window-spec.js index 07a31420687c..db007de5693f 100644 --- a/spec/api-browser-window-spec.js +++ b/spec/api-browser-window-spec.js @@ -337,6 +337,17 @@ describe('browser-window module', function () { }) }) + describe('BrowserWindow.setProgressBar(progress)', function () { + it('sets the progress', function () { + assert.doesNotThrow(function () { + if (process.platform === 'darwin') { + app.dock.setIcon(path.join(fixtures, 'assets', 'logo.png')) + } + w.setProgressBar(.5) + }) + }) + }) + describe('BrowserWindow.fromId(id)', function () { it('returns the window with id', function () { assert.equal(w.id, BrowserWindow.fromId(w.id).id) From 5f0238ebf4c0a2678b6d5e4af329823e11bcc55a Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 16 Jun 2016 14:57:23 -0700 Subject: [PATCH 2/3] Add subview whenever content view is empty --- atom/browser/native_window_mac.mm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index 9035d5e62d5a..70d710dac52e 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -907,7 +907,9 @@ void NativeWindowMac::SetProgressBar(double progress) { NSImageView* image_view = [[NSImageView alloc] init]; [image_view setImage:[NSApp applicationIconImage]]; [dock_tile setContentView:image_view]; + } + if ([[dock_tile.contentView subviews] count] == 0) { NSProgressIndicator* progress_indicator = [[AtomProgressBar alloc] initWithFrame:NSMakeRect(0.0f, 0.0f, dock_tile.size.width, 15.0)]; [progress_indicator setStyle:NSProgressIndicatorBarStyle]; @@ -916,7 +918,7 @@ void NativeWindowMac::SetProgressBar(double progress) { [progress_indicator setMinValue:0]; [progress_indicator setMaxValue:1]; [progress_indicator setHidden:NO]; - [image_view addSubview:progress_indicator]; + [dock_tile.contentView addSubview:progress_indicator]; } NSProgressIndicator* progress_indicator = From b6f87574ee5ba23753038a07a096f95af0b89c60 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 16 Jun 2016 15:01:37 -0700 Subject: [PATCH 3/3] Reset icon and clear progress bar --- spec/api-browser-window-spec.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spec/api-browser-window-spec.js b/spec/api-browser-window-spec.js index db007de5693f..c5735b75a8a8 100644 --- a/spec/api-browser-window-spec.js +++ b/spec/api-browser-window-spec.js @@ -344,6 +344,11 @@ describe('browser-window module', function () { app.dock.setIcon(path.join(fixtures, 'assets', 'logo.png')) } w.setProgressBar(.5) + + if (process.platform === 'darwin') { + app.dock.setIcon(null) + } + w.setProgressBar(-1) }) }) })