Tuesday 12 November 2019

"Show Desktop" sometimes sets a window to "always on top"

No worries, not another "where is my show desktop button gone" question.


What I found under Windows 7, when you use the "Show Desktop" feature (I prefer the ⊞ Win + D shortcut) and then bring all windows back by using it again, some windows behave as if they're glued to the front of the z-order. What this means is, say, I have windows A B and C open, with focus on A, hit ⊞ Win + D twice, and now it may happen that if I then want to switch to B or C, either by Alt+Tab or by selecting them on the taskbar, the taskbar shows the highlight, but A stays visible (and usable, it's not just a rendering issue) in the foreground.


Imagine the following situations, all three windows cascading and overlapping:


A (focus)
B
C


-> ⊞ Win + D


Desktop (focus)


-> ⊞ Win + D


A (focus)
B
C


-> click C on taskbar


A
C (focus)
B


-> click B on taskbar


A
B (focus)
C


And so on. Focus means actual input focus, i.e. in second situation, any keyboard typing is sent to window B while window A is in the foreground.


It does not matter what kind of application; in my current case an instance of Outlook and an instance of Explorer is stuck, while a second instance of Explorer and an instance of Firefox behave normally. This should show that this problem can occur even between multiple instances of the same application, and that there are no fancy applications involved that like to pretend they are the most important program and internally force "always on top".


Showing and unshowing the desktop again doesn't help; in the worst case another window might end up with the "glued to the top of the z-order" too. Between those, I can easily switch, but in order to get a window which still behaves normally on top, I have to manually minimize the offending windows.


The only cure seems to close the offending windows so far, I've not found anything else that helps.


Could it be that Windows 7 has a bug that can force an ALWAYS_ON_TOP flag onto some windows when restoring from "Show Desktop", or am I doing something wrong?


More information:


⊞ Win+d issue easy to replicate on Win7-64bit-Ultimate.


The affected windows (of any program) seem to be placed into a separate "Z" group. You can place multiple/many windows into this always-on-top state, those in the affected state will function normally in relation to each other with the exception that:



  • The group as a whole is always-on-top of any non-affected window

  • The whole group is in front of the taskbar.

  • The whole group does not respond to (context on taskbar) "cascade windows" or similar commands.


The fact that the affected windows are on top of the taskbar and otherwise function as "special windows" shows that windows 7 must have a hidden "feature" of always-on-top that gets applied with the show desktop function. The feature appears to place windows in a super window state that is on top of the taskbar (the normal group remaining behind the taskbar). When you click the start menu or context menu of the taskbar, the start menu/taskbar comes to the foreground of the always-on-top group, however this does not revert the affected windows, only a temporary takeover until you switch to something other than the start menu/taskbar.


This is key to finding an answer. How do we get windows to unassign the special super status or not do the assignment in the first place?


Even More info from another user: It appeared to have cleared by closing all windows and restarting. Initially I could not reproduce the error, then after opening all my working windows, I did indeed reproduce it on any window.


I almost think it could be initialized with something to do with multiple windows of Chrome, and then the show desktop problem will crop up once one window has it. This was because: After messing around some more with a chrome session saver (session buddy) and restoring sessions and getting the super state, I restored and closed the window I was in and now I am again at a place where I can not reproduce the error, even in my "work environment" with some 35 chrome tabs in two windows, plus other programs, file locations, remote desktops and a second chrome profile with another dozen tabs.


So, back to square one with finding the actual instigator of the super state phenomenon.


Once you actually have the super sate issue, the following will reproduce: Ok, I am doing this as I type it:


Open chrome (to view this website), then Notepad, then Calculator, (could be any windows, but for the purpose of demonstration, follow along with me)


The windows should function normally, overlap your windows so that you can see the edge of all windows and the Z-order is (from front to back):the browser on top, then the calculator, then Notepad (you should be able to see part of the background windows).


Now, with the browser on top, press win+d, then win+d again.


Click on Calculator, then your browser, your browser is now stuck in the foreground. Clicking on notepad will bring the focus to notepad, and it will be in front of the calculator, yet it will stay behind the browser, as your browser is in "super state". (many arrangements of switching focus after returning from win+d will create the problem, with the exeption of clicking the desktop, I also noticed that I could not get calculator into super state unless it overlapped my chrome browser).


Again, this does not seem to work until at least one of your windows is affected.


We still do not know how to get the initial window into Superstate, only subsequent ones.

No comments:

Post a Comment

How can I VLOOKUP in multiple Excel documents?

I am trying to VLOOKUP reference data with around 400 seperate Excel files. Is it possible to do this in a quick way rather than doing it m...