Skip to content

Commit 3ee8bf3

Browse files
committed
Bug 1773118 - Fix transition from fullscreen to maximized. r=stransky
We don't call MakeFullScreen(false), causing weirdness. This is needed even with the next patch because otherwise other things like grabbing the tabbar cause the same kind of weirdness. Differential Revision: https://phabricator.services.mozilla.com/D148340
1 parent fc7062a commit 3ee8bf3

File tree

1 file changed

+21
-8
lines changed

1 file changed

+21
-8
lines changed

widget/gtk/nsWindow.cpp

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2493,13 +2493,26 @@ void nsWindow::SetSizeMode(nsSizeMode aMode) {
24932493
// Save the requested state.
24942494
mSizeMode = aMode;
24952495

2496-
// return if there's no shell or our current state is the same as
2497-
// the mode we were just set to.
2498-
if (!mShell || mSizeState == mSizeMode) {
2496+
// Return if there's no shell or our current state is the same as the mode we
2497+
// were just set to.
2498+
if (!mShell || mSizeState == aMode) {
24992499
LOG(" already set");
25002500
return;
25012501
}
25022502

2503+
if (mSizeState == nsSizeMode_Fullscreen) {
2504+
LOG(" unfullscreening");
2505+
MakeFullScreen(false);
2506+
// NOTE: Fullscreen restoration changes mSizeMode to the state before
2507+
// fullscreen, but we might need to still transition to aMode.
2508+
mSizeState = mSizeMode;
2509+
mSizeMode = aMode;
2510+
if (mSizeState == aMode) {
2511+
LOG(" restored to desired state");
2512+
return;
2513+
}
2514+
}
2515+
25032516
switch (aMode) {
25042517
case nsSizeMode_Maximized:
25052518
LOG(" set maximized");
@@ -2513,20 +2526,18 @@ void nsWindow::SetSizeMode(nsSizeMode aMode) {
25132526
LOG(" set fullscreen");
25142527
MakeFullScreen(true);
25152528
break;
2516-
25172529
default:
2530+
MOZ_FALLTHROUGH_ASSERT("Unknown size mode");
2531+
case nsSizeMode_Normal:
25182532
LOG(" set normal");
25192533
// nsSizeMode_Normal, really.
25202534
if (mSizeState == nsSizeMode_Minimized) {
25212535
gtk_window_deiconify(GTK_WINDOW(mShell));
25222536
} else if (mSizeState == nsSizeMode_Maximized) {
25232537
gtk_window_unmaximize(GTK_WINDOW(mShell));
2524-
} else if (mSizeState == nsSizeMode_Fullscreen) {
2525-
MakeFullScreen(false);
25262538
}
25272539
break;
25282540
}
2529-
25302541
mSizeState = mSizeMode;
25312542
}
25322543

@@ -7098,7 +7109,9 @@ nsresult nsWindow::MakeFullScreen(bool aFullScreen) {
70987109
}
70997110

71007111
if (aFullScreen) {
7101-
if (mSizeMode != nsSizeMode_Fullscreen) mLastSizeMode = mSizeMode;
7112+
if (mSizeMode != nsSizeMode_Fullscreen) {
7113+
mLastSizeMode = mSizeMode;
7114+
}
71027115

71037116
mSizeMode = nsSizeMode_Fullscreen;
71047117

0 commit comments

Comments
 (0)