Closed Bug 1666874 Opened 3 years ago Closed 3 years ago

Skeleton UI does not correctly handle maximized windows


(Firefox :: General, defect)




84 Branch
Tracking Status
firefox84 --- fixed


(Reporter: alexical, Assigned: alexical)


(Blocks 1 open bug)



(1 file)

NOTE: this is behind the currently disabled Windows skeleton UI feature.

  • Turn on the skeleton UI pref
  • Maximize the window
  • Close and reopen Firefox
  • Notice that the skeleton UI window is not maximized
Assignee: nobody → dothayer
Severity: -- → S4

Most of this patch is a dance to avoid size flickering of the skeleton UI
window. We change all Resize/Move/SetSizeMode calls from before the first
nsWindow::Show call. Normally those have no effect, since the window isn't
shown yet, and if the window is not maximized, they typically match the
sizes we've gotten out of the registry anyway. However, if we are maximized,
then they produce a lot of visual noise. We can however achieve the desired
effect by just calling SetWindowPlacement.

Similarly, we switch the window styles of the skeleton UI window to match those
of the toplevel Windows window, and adjust the client rect from our window proc
in a way that matches the adjustments in nsWindow in the WM_NCCALCSIZE handler.
We do this because otherwise we get a flicker as soon as we change the styles
and nonclient margins as the fake chrome pops up and then back down.

Lastly we also change the extended window styles so that they match. We
historically added WS_EX_TOOLWINDOW here to hide the toolbar entry, because it
would otherwise switch out to a new toolbar entry when we changed the window
styles. However since our new styles match, we no longer need to do this. It
was also causing the maximized window to paint over the Windows taskbar.

Depends on D91453

Pushed by
Support maximized windows for skeleton UI r=agashlin
Pushed by
Support maximized windows for skeleton UI r=agashlin
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 84 Branch
Flags: needinfo?(dothayer)
You need to log in before you can comment on or make changes to this bug.