Closed Bug 660171 Opened 14 years ago Closed 14 years ago

windows 7 taskbar (autohide enabled) not shown when hovered upon after getting out of fullscreen mode from Firefox

Categories

(Core :: Widget: Win32, defect)

x86
Windows 7
defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 617052

People

(Reporter: rakshithbekal, Assigned: bbondy)

References

Details

Attachments

(1 file)

User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:7.0a1) Gecko/20110526 Firefox/7.0a1 Build Identifier: Mozilla/5.0 (Windows NT 6.1; rv:7.0a1) Gecko/20110526 Firefox/7.0a1 Windows 7 taskbar with autohide feature enabled Is not shown when mouse is hovered upon it immediately after getting out of fullscreen mode from firefox. Will start working after Firefox windows is moved,minimized,closed, or any activity outside the browser window has taken place. Reproducible: Always Steps to Reproduce: 1.set your windows 7 taskbar to autohide 2.using F11 go fullscreen in your Firefox window and get out of it using the same shortcut. 3.hover your mouse icon in the corner of your taskbar position while the browser is still open maximized. 4. Notice that the taskbar doesn't show up until you restore down the browser window or move it. Actual Results: The autohid taskbar doesn't show up Expected Results: Taskbar has to show up when hovered upon. do not touch the browser window or click anything after you come out of fullscreen to be more accurate in noticing the problem.
Component: Disability Access → General
QA Contact: disability.access → general
Component: General → Widget: Win32
Product: Firefox → Core
QA Contact: general → win32
Version: unspecified → Trunk
I could reproduce the issue on the latest Nightly: Mozilla/5.0 (Windows NT 6.1; rv:8.0a1) Gecko/20110707 Firefox/8.0a1 I could not bring up the windows menu bar after recovering from browser fullscreen mode to window mode. The issue is reproducible on 4.0.1, as well, so it's not likely to be a regression. Bug could be set on NEW if not a dupe
Status: UNCONFIRMED → NEW
Ever confirmed: true
I think this is a duplicate of Bug 583552
Ignore, that one is marked a duplicate of a different one :)
Can reproduce only this way: ... 2.using F11 go fullscreen in your Firefox window and get out of it using the same shortcut. ... -> ... 2.1 Go to full screen mode using F11 2.2 Click on the window to give it focus 2.3 Exit full screen mode. ...
Assignee: nobody → netzen
What happens is that the zorder of the taskbar is behind the maximized window. Once the zorder changes it gets fixed. I'm not yet sure if the window size should be overlapped with the taskbar. I will use logging later to find out. A few preliminary ways to fix this from what I've debugged so far: 1. We could change the zorder of the window to be ahead of the taskbar using SetWindowPos 2. We could change the zorder of the taskbar to be above our window (Probably best not to touch it though). 3. We could get the zorder of the window before full screen and restore it after full screen. (Using GetNextWindow & SetWindowPos) 4. We could make the size not include the 1 pixel taskbar, I want to log this though to see if we normally take up the whole resolution or not when maximized.
I debugged this for many hours and checked a lot of things such as glass, bounds, resizing, nc margins, ... I think the bug is a Windows related problem but I have a work around. By the way IE9 has the exact same bug, and I've seen reference to other people with the same problem in their own apps so it's a common problem with maximized -> full screen w/ auto hide taskbars. There are several ways to fix this but the 2 best ways you can fix this is by either: 1) restoring the window just before full screen and then maximizing it again after (Google Chrome does this) 2) Simply hiding the window like we do in normal mode before the full screen and showing again after solves the problem I've also tried things like sending messages directly to the taskbar to activate it manually (which works) but none are as clean as the above two solutions. Since #2 looks visually the best and is consistent with how we work in normal mode that is the way I did it. Patch attached. I'm setting you as the reviewer because I noticed via annotate that you did a similar fix for a different problem in Bug 648902.
Attachment #552838 - Flags: review?(jmathies)
This will reintroduce "flicker" bug 648902, which a lot of folks complained about. Not sure we want to go back to that.
The flicker is worse when you do like Chrome with the restore and then maximize but ya I don't think this fix is ideal either. I will come back to it after doing some other tasks as I need a break from this one :) IE has really nice transitions, but then again they have this exact same bug :) I think it would be great if we get rid of the hide completely even for normal windows as it also effects the taskbar position as mentioned in Bug 646374. I think I had this working as well with sending a WM_ACTIVATE to the taskbar itself, the side effect there was that it would grow the taskbar to full height and then back to hidden on transitions. What are your thoughts on that method? Also I think we can cleanup some calls to setwindow pos that happen from the calls to set size mode by setting the size mode directly instead. I think that cleaned up normal mode resizes a bit.
See Also: → 646374
See Also: → 648902
See Also: → 634586
I'm not, sounds like a windows bug. For what it's worth, I'm not able to reproduce the problem. STR: 1) auto hide enabled 2) nightly normalized window 3) maximize nightly 4) F11 fullscreen 5) F11 maximized 6) hover the mouse over the taskbar The taskbar comes up for me.
See my Comment 4. You need a step 4.5 that is wait until fully full screen and chrome hides, then click on the background.
> I'm not, sounds like a windows bug. Did you mean not opposed to the WM_ACTIVATE to the taskbar?
I can detect by the way that autohide is enabled for each edge with a Win32 shell API, so whatever the fix will be can only happen in that case.
(In reply to Brian R. Bondy [:bbondy] from comment #11) > > I'm not, sounds like a windows bug. > > Did you mean not opposed to the WM_ACTIVATE to the taskbar? If I understand correctly, you're proposing we post activate messages to explorer.exe windows from within widget? If that's the case, I'm not a huge fan of that kind of fix. I like #3 & #4. In fact I think we already have the one-pixel adjustment in chrome margin code, but maybe it's not working? I think google chrome does this as well.
(#3 & #4 in comment 5.)
> you're proposing we post activate messages to explorer.exe windows from within widget Ya the idea was to get an HWND handle to the taskbar itself and do a SendMessage to it to activate it again. > we already have the one-pixel adjustment in chrome margin code The bug is actually deeper than this. For example if you add a S
... if you add a step 7 to your Comment 9: 7) Taskbar is not unhiding, double click on the title bar to bring the window to normal mode. You'll see that the taskbar still doesn't show. So it's not related to the 1 pixel margin. On a side note that check should probably check the location of the autohide taskbar and adjust the 1pixel that way, but it seems to make no difference. Something isn't right there but not related to this bug.
Google chrome gets it to work via the restore and full screen, and then from full screen they go to the restored state, and then maximize from that. So they avoid a maximize to full screen transition completely.
Re my step 7) in Comment 16, you need to have another window maximized behind Firefox. I think the problem is that there is a bug in Windows where the taskbar falls to the lowest zorder position but only when done from maximized state. Moving Firefox to just behind the taskbar in zorder will put other windows in front of Firefox. Moving the taskbar in Firefox would work as well but I also don't like touching the taskbar directly since we don't own it.
You can obtain the taskbar auto hide handle this way by the way: APPBARDATA taskbar_data = { 0 }; taskbar_data.cbSize = sizeof APPBARDATA; taskbar_data.uEdge = ABE_BOTTOM; // <-- bottom auto hide HWND taskbar = reinterpret_cast<HWND>(SHAppBarMessage(ABM_GETAUTOHIDEBAR, &taskbar_data));
If you have a fix that you think is safe please post it. We can discuss it with other peers.
I have a good fix for this now (not a hack) just need feedback on Bug 127160 first.
Would this new full screen call for the taskbar help here? http://msdn.microsoft.com/en-us/library/bb774640%28v=VS.85%29.aspx Setting the value of fFullscreen to TRUE, the Shell treats this window as a full-screen window, and the taskbar is moved to the bottom of the z-order when this window is active. Setting the value of fFullscreen to FALSE removes the full-screen marking, but does not cause the Shell to treat the window as though it were definitely not full-screen. With a FALSE fFullscreen value, the Shell depends on its automatic detection facility to specify how the window should be treated, possibly still flagging the window as full-screen.
Ya I'm going to try using ITaskbarList2::MarkFullscreenWindow today, I hope it might fix this. I looked into ABN_FULLSCREENAPP message more later last night: http://msdn.microsoft.com/en-us/library/bb787965(v=VS.85).aspx It seems that this should be sent automatically to appbar implementers but in some cases is not. I read that there was some bugs which Microsoft confirmed via this Russian site: (The site is pretty old though) http://www.rsdn.ru/forum/winapi/351198.flat.aspx I'm hoping what you mentioned will make it work properly though instead. As per ABN_FULLSCREENAPP: > When a full-screen application is opening, an appbar must drop to the bottom of the z-order. When it is closing, the appbar should restore its z-order position. So it seems a better description of this bug is that ABN_FULLSCREENAPP is not being sent (because a transition is not being detected by Windows) when going from full screen to maximized. As a side note, pre-windows 7 taskbars can be always on top or not. As of Windows 7 they are always on top.
Side note: Opera also has this same bug like IE but have smooth transitions. Chrome does restore to non maximized size of window before full screen (and on exit full screen does: fullscreen->restored window->maximize) so does not have the problem. But has bad looking transitions.
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → DUPLICATE
It turns out that you can fix this as well by Bug 617052 - Use ITaskbarList2::MarkFullscreenWindow so marking this as a duplicate.
Attachment #552838 - Flags: review?(jmathies)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: