Closed Bug 384278 Opened 13 years ago Closed 8 months ago

minimized windows aren't restored maximized although they were maximized before minimizing

Categories

(Firefox :: Session Restore, defect)

x86
Windows 2000
defect
Not set

Tracking

()

RESOLVED FIXED
Firefox 67
Tracking Status
firefox67 --- fixed

People

(Reporter: david.balazic, Assigned: orangelynx)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4

When exiting and restarting Firefox, some of its windows are not restored to the original maximized state.

Reproducible: Sometimes

Steps to Reproduce:
1. Start FF, open 3 windows and some tab in them
2. make sure all 3 are maximized
3. menu  File / Exit (and confirm closing multiple tabs, if asked)
4. start FF again
Actual Results:  
2 windows restored maximized, one not (it is about half screen wide)

Expected Results:  
all 3 windows restored as maximized

Some tabs open a password dialog* at start, maybe that interferes ?

* - master password dialog (two times, known bug); HTTP login dialog
Maybe it happens only if the window was minimized at the moment of exiting.

In that case this might be related to bug 327462
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4
They all open maximized when I have checked "Show my windows and tabs from last time".
Indeed, we currently restore minimized windows in their original, unmaximized position since there's no easy way to tell whether a minimized window was formerly maximized or not.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Summary: Not all FF windows are restored maximized → minimized windows aren't restored maximized although they were maximized before minimizing
Yes, but before exiting, all windows are restored to their maximized state (because they display the "Close multiple tabs?" dialog).

So actually there are no minimized windows when exisitng FF.
(In reply to comment #4)
> So actually there are no minimized windows when exisitng FF.

Due to the way Firefox currently works, the quit-application-granted notification is dispatched before the "Close multiple tabs?" prompt is shown - so SessionStore shuts down before the windows are restored and considers them as minimized at exit. That bit of this bug should be fixed by bug 383760.
Blocks: 450886
I don't see what the problem is.
You need 2 variables
Bool Minimized
Bool Maximized

Those have only 4 possible combinations and each of them can and should be saved.
No idea where to look to find how this is currently handled, but in theory should be doable by making a call to GetWindowPlacement (http://msdn.microsoft.com/en-us/library/ms633518%28VS.85%29.aspx), check the WINDOWPLACEMENT.flags value for WPF_RESTORETOMAXIMIZED for each window, and if it's true then just set the same session restore flag that normally marks a window as being maximized when the program exits.
This bug still exists with Firefox v41.0.1 on Windows 7 (64-bit), and it's really quite tedious to maximise 10-20 windows every time I restart Firefox!  (And actually it's gotten worse recently, which I'll describe in a separate bug report...)

If it's not possible for Firefox to remember whether a windows was Maximised or not, then how about a user preference to force windows recorded as minimised to be Restored as maximised (or not).
> If it's not possible for Firefox to remember whether a windows was Maximised

It is certainly possible, it just needs to be done
After performing the steps to reproduce the problem, the hotkey win+arrow-up does not work to maximize the window properly either. Needs to be maximized by dragging with mouse or clicking the maximize toolbar icon.

Personally, I'm surprised this issue hasn't been addressed in 12 years, because at least for me this is the most annoying thing about FF right now.
Current window state in the sessionstore system includes `sizeMode` which can be "normal", "minimized", "maximized". However, the OS also remembers whether the window was "normal" or "maximized" before minimization to restore it appropriately. With this fix, sessionstore does likewise.

Review completed. check-in needed.

Assignee: nobody → orangelynx
Status: NEW → ASSIGNED
Keywords: checkin-needed

Pushed by csabou@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/a1f9a3e18986
Added additional state variable to store window state before window minimization. r=mikedeboer

Keywords: checkin-needed

Backed out changeset a1f9a3e18986 (Bug 384278) for browser chrome failures on browser_sizemodeBeforeMinimized.js.

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&resultStatus=testfailed%2Cbusted%2Cexception&fromchange=a1f9a3e18986242af272c6d61099c64c19e16d1a&tochange=be2f62a541cb4e5c0472878f3370092d1a2bbcae&selectedJob=225756464

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=225756464&repo=autoland&lineNumber=4991

Backout link: https://hg.mozilla.org/integration/autoland/rev/be2f62a541cb4e5c0472878f3370092d1a2bbcae

[task 2019-02-03T15:20:33.999Z] 15:20:33 INFO - Console message: [JavaScript Error: "Unknown collection "main/tippytop"" {file: "resource://services-settings/RemoteSettingsClient.jsm" line: 259}]
[task 2019-02-03T15:20:34.000Z] 15:20:34 INFO - sync@resource://services-settings/RemoteSettingsClient.jsm:259:13
[task 2019-02-03T15:20:34.001Z] 15:20:34 INFO - asyncget@resource://services-settings/RemoteSettingsClient.jsm:228:17
[task 2019-02-03T15:20:34.002Z] 15:20:34 INFO - async
getSite@resource://activity-stream/lib/FaviconFeed.jsm:156:25
[task 2019-02-03T15:20:34.003Z] 15:20:34 INFO - asyncfetchIcon@resource://activity-stream/lib/FaviconFeed.jsm:130:24
[task 2019-02-03T15:20:34.004Z] 15:20:34 INFO - async
onAction@resource://activity-stream/lib/FaviconFeed.jsm:180:9
[task 2019-02-03T15:20:34.005Z] 15:20:34 INFO - _middleware/</<@resource://activity-stream/lib/Store.jsm:51:11
[task 2019-02-03T15:20:34.006Z] 15:20:34 INFO - Store/this[method]@resource://activity-stream/lib/Store.jsm:29:54
[task 2019-02-03T15:20:34.007Z] 15:20:34 INFO - _requestRichIcon@resource://activity-stream/lib/TopSitesFeed.jsm:458:5
[task 2019-02-03T15:20:34.008Z] 15:20:34 INFO - _fetchIcon@resource://activity-stream/lib/TopSitesFeed.jsm:422:5
[task 2019-02-03T15:20:34.009Z] 15:20:34 INFO - asyncgetLinksWithDefaults@resource://activity-stream/lib/TopSitesFeed.jsm:328:11
[task 2019-02-03T15:20:34.010Z] 15:20:34 INFO - async
refresh@resource://activity-stream/lib/TopSitesFeed.jsm:351:25
[task 2019-02-03T15:20:34.011Z] 15:20:34 INFO - async*onAction@resource://activity-stream/lib/TopSitesFeed.jsm:650:9
[task 2019-02-03T15:20:34.012Z] 15:20:34 INFO - _middleware/</<@resource://activity-stream/lib/Store.jsm:51:11
[task 2019-02-03T15:20:34.013Z] 15:20:34 INFO - Store/this[method]@resource://activity-stream/lib/Store.jsm:29:54
[task 2019-02-03T15:20:34.014Z] 15:20:34 INFO - init/this.intervalId<@resource://activity-stream/lib/SystemTickFeed.jsm:16:41
[task 2019-02-03T15:20:34.015Z] 15:20:34 INFO - notify@resource://gre/modules/Timer.jsm:42:7
[task 2019-02-03T15:20:34.016Z] 15:20:34 INFO -
[task 2019-02-03T15:20:34.017Z] 15:20:34 INFO - Buffered messages finished
[task 2019-02-03T15:20:34.018Z] 15:20:34 INFO - TEST-UNEXPECTED-FAIL | browser/components/sessionstore/test/browser_sizemodeBeforeMinimized.js | Test timed out -
[task 2019-02-03T15:20:34.020Z] 15:20:34 INFO - GECKO(5181) | MEMORY STAT | vsize 912MB | residentFast 399MB | heapAllocated 113MB
[task 2019-02-03T15:20:34.021Z] 15:20:34 INFO - TEST-OK | browser/components/sessionstore/test/browser_sizemodeBeforeMinimized.js | took 90043ms
[task 2019-02-03T15:20:34.022Z] 15:20:34 INFO - checking window state
[task 2019-02-03T15:20:34.023Z] 15:20:34 INFO - Not taking screenshot here: see the one that was previously logged
[task 2019-02-03T15:20:34.024Z] 15:20:34 INFO - TEST-UNEXPECTED-FAIL | browser/components/sessionstore/test/browser_sizemodeBeforeMinimized.js | Found a browser window after previous test timed out -

Flags: needinfo?(orangelynx)

Requesting try-server run to validate fix addressing failure of browser/components/sessionstore/test/browser_sizemodeBeforeMinimized.js on certain profiles.

Flags: needinfo?(emilio)

Timeout problem on linux platform resolved with latest revision. Check-in / retrial needed. Timeout problem referenced in Bug 1529085.

Flags: needinfo?(orangelynx)
Keywords: checkin-needed

Maximilian, you added checkin-needed here, what do you need landed?

Flags: needinfo?(orangelynx)

Andreea, I was asking for a check-in / landing for the updated D13234 as I was under the impression that the check-in for the previous version was backed-out due to a failed try-server run.

https://hg.mozilla.org/integration/autoland/rev/a1f9a3e18986242af272c6d61099c64c19e16d1a

Sorry, I'm new to the process.

Flags: needinfo?(orangelynx)

Masimilian, the revision is blocked from landing and i assume it's because you closed the revision.

Andreea, I see. I reopened the revision, is it possible to give landing another try now?

Pushed by apavel@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/8f6a8dc75308
Added additional state variable to store window state before window minimization. r=mikedeboer

(In reply to Maximilian Schütte from comment #21)

Andreea, I see. I reopened the revision, is it possible to give landing another try now?

Yes, that was it. Thank you.

Status: ASSIGNED → RESOLVED
Closed: 8 months ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 67
You need to log in before you can comment on or make changes to this bug.