fix: check for maximized window before unmaximizings (#32438)

This commit is contained in:
David Sanders 2022-01-16 23:47:14 -08:00 committed by GitHub
parent 2a8d49a059
commit 0c75b3b2ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 5 deletions

View file

@ -581,6 +581,7 @@ void NativeWindowViews::Maximize() {
#endif
void NativeWindowViews::Unmaximize() {
if (IsMaximized()) {
#if defined(OS_WIN)
if (transparent()) {
SetBounds(restore_bounds_, false);
@ -589,6 +590,7 @@ void NativeWindowViews::Unmaximize() {
#endif
widget()->Restore();
}
}
bool NativeWindowViews::IsMaximized() {

View file

@ -3379,6 +3379,29 @@ describe('BrowserWindow module', () => {
w.unmaximize();
expectBoundsEqual(w.getPosition(), initialPosition);
});
// TODO(dsanders11): Enable once minimize event works on Linux again.
// See https://github.com/electron/electron/issues/28699
ifit(process.platform !== 'linux')('should not restore a minimized window', async () => {
const w = new BrowserWindow();
const minimize = emittedOnce(w, 'minimize');
w.minimize();
await minimize;
w.unmaximize();
await delay(1000);
expect(w.isMinimized()).to.be.true();
});
it('should not change the size or position of a normal window', async () => {
const w = new BrowserWindow();
const initialSize = w.getSize();
const initialPosition = w.getPosition();
w.unmaximize();
await delay(1000);
expectBoundsEqual(w.getSize(), initialSize);
expectBoundsEqual(w.getPosition(), initialPosition);
});
});
describe('setFullScreen(false)', () => {