diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index 8e28553d71cf..50d74d6e8c2e 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -172,6 +172,7 @@ bool ScopedDisableResize::disable_resize_ = false; @private atom::NativeWindowMac* shell_; bool is_zooming_; + int level_; } - (id)initWithShell:(atom::NativeWindowMac*)shell; @end @@ -182,6 +183,7 @@ bool ScopedDisableResize::disable_resize_ = false; if ((self = [super init])) { shell_ = shell; is_zooming_ = false; + level_ = [shell_->GetNativeWindow() level]; } return self; } @@ -301,11 +303,19 @@ bool ScopedDisableResize::disable_resize_ = false; shell_->NotifyWindowMoved(); } +- (void)windowWillMiniaturize:(NSNotification*)notification { + NSWindow* window = shell_->GetNativeWindow(); + // store the current status window level to be restored in windowDidDeminiaturize + level_ = [window level]; + [window setLevel:NSNormalWindowLevel]; +} + - (void)windowDidMiniaturize:(NSNotification*)notification { shell_->NotifyWindowMinimize(); } - (void)windowDidDeminiaturize:(NSNotification*)notification { + [shell_->GetNativeWindow() setLevel:level_]; shell_->NotifyWindowRestore(); } diff --git a/spec/api-browser-window-spec.js b/spec/api-browser-window-spec.js index a7c153235c88..7cd4980cb30c 100644 --- a/spec/api-browser-window-spec.js +++ b/spec/api-browser-window-spec.js @@ -615,6 +615,22 @@ describe('BrowserWindow module', function () { }) }) + describe('BrowserWindow.alwaysOnTop() resets level on minimize', function () { + if (process.platform !== 'darwin') { + return + } + + it('resets the windows level on minimize', function () { + assert.equal(w.isAlwaysOnTop(), false) + w.setAlwaysOnTop(true, 'screen-saver') + assert.equal(w.isAlwaysOnTop(), true) + w.minimize() + assert.equal(w.isAlwaysOnTop(), false) + w.restore() + assert.equal(w.isAlwaysOnTop(), true) + }) + }) + describe('BrowserWindow.setAutoHideCursor(autoHide)', () => { if (process.platform !== 'darwin') { it('is not available on non-macOS platforms', () => {