Minimising window with Always on top attribute leaves contents in underlying window

2004-01-25 Thread Mike Parker
I'm using 4.3.0-42 and have noticed that the following minor bug in
multi-window operation when running on Win2K and WinXPPro:

Two windows (terminal or otherwise) are overlapped and the topmost one has
it's Always on top attribute set (by right-clicking on the windows title
bar). The topmost window is then minimised, leaving a copy of its contents
on the desktop, viewable by moving the remaining window over the portion of
the desktop previously occupied by the other window.

Regards,

Mike




Re: Minimising window with Always on top attribute leaves contents in underlying window

2004-01-25 Thread Jack Tanner
Mike Parker wrote:
I'm using 4.3.0-42 and have noticed that the following minor bug in
multi-window operation when running on Win2K and WinXPPro:
Two windows (terminal or otherwise) are overlapped and the topmost one has
it's Always on top attribute set (by right-clicking on the windows title
bar). The topmost window is then minimised, leaving a copy of its contents
on the desktop, viewable by moving the remaining window over the portion of
the desktop previously occupied by the other window.
Confirmed.

Does anyone know how other window managers usually handle the 
always-on-top-then-minimized use case?

-JT




Re: Minimising window with Always on top attribute leaves contents in underlying window

2004-01-25 Thread Jack Tanner
This is probably related: using multi-window mode, open an emacs over 
ssh. Click on a menu (e.g, File), leave it droppped down, and minimize 
the emacs window. Result: emacs gets minimized, but the dropped down 
menu stays behind.

-JT



Re: Minimising window with Always on top attribute leaves contents in underlying window

2004-01-25 Thread Earle F. Philhower III
Hi Mike...
At 08:29 AM 1/25/2004 +, Mike wrote:
I'm using 4.3.0-42 and have noticed that the following minor bug in
multi-window operation when running on Win2K and WinXPPro:
Two windows (terminal or otherwise) are overlapped and the topmost one has
it's Always on top attribute set (by right-clicking on the windows title
bar). The topmost window is then minimised, leaving a copy of its contents
on the desktop, viewable by moving the remaining window over the portion of
the desktop previously occupied by the other window.
It's been a while since I submitted a patch, but since this problem
is due to my code I'll be nice and fix it.  Basically, whenever we get
a WM_SYSCOMMAND:SC_MINIMIZE we need to disable the HWND_TOPMOST attribute
and let the X system recognize it.  On a WM_SYSCOMMAND:SC_RESTORE we just
need to reset that attribute to what it was before.
I'm attaching a patch *against the CVS -r CYGWIN tree* because I cannot
get the XWin-4.3.0-42 source available on
http://xfree86.cygwin.com/devel/server/changelog.html
to compile properly, whereas the freedesktop CVS goes thru without a hitch.
It adds a boolean fAlwaysOnTop to the window privates;  caches the AOT value
on a WM_SYSCOMMAND:SC_MINIMIZE and removes top-z attributes from the window;
restores the AOT value on a WM_SYSCOMMAND:SC_RESTORE; and changes the
WM_WINDOWPOSCHANGED event handler to always allow the Windoze DefWindowProc()
to be called (necessary for the changes I did, and doesn't seem to have any
negative effects).
-Earle F. Philhower, III
 [EMAIL PROTECTED]
 cdrlabel - ZipLabel - FlpLabel
 http://www.cdrlabel.com


fixaot.patch
Description: Binary data


Re: Minimising window with Always on top attribute leaves contents in underlying window

2004-01-25 Thread Harold L Hunt II
Earle,

Any reason for the following in your patch:

@@ -893,7 +909,7 @@
if (s_pScreenPriv != NULL)
  s_pScreenPriv-fWindowOrderChanged = TRUE;
   }
-  return 0;
+  break;
The thing that strikes me as odd is that you have to return from the 
WM_WINDOWPOSCHANGED message without calling DefWindowProc (which will 
get called if you change that return to a break) in order to prevent 
Windows from breaking that message down into a WM_SIZE and WM_MOVE 
message and sending those in addition.  My worry is that you may have 
essentially found a bug in the WM_WINDOWPOSCHANGED handling that was 
fixed by allowing the WM_SIZE and WM_MOVE messages to be generated and 
handled, when we should really fix such a bug instead of accidentally 
masking its existance.

I'm not comfortable removing this change from your patch since it will 
then need to be tested again to verify that things work as expected. 
Since you have already been testing it, I figured it would be easier for 
you to do the testing :)

Let me know what to do with your patch,

Harold


Re: Minimising window with Always on top attribute leaves contents in underlying window

2004-01-25 Thread Earle F. Philhower III
Howdy Harold, I thought you were taking it easy for a while!

At 11:37 PM 1/25/2004 -0500, you wrote:
Any reason for the following in your patch:
@@ -893,7 +909,7 @@
if (s_pScreenPriv != NULL)
  s_pScreenPriv-fWindowOrderChanged = TRUE;
   }
-  return 0;
+  break;
The thing that strikes me as odd is that you have to return from the 
WM_WINDOWPOSCHANGED message without calling DefWindowProc (which will get 
called if you change that return to a break) in order to prevent Windows 
from breaking that message down into a WM_SIZE and WM_MOVE message and 
sending those in addition.  My worry is that you may have essentially 
found a bug in the WM_WINDOWPOSCHANGED handling that was fixed by allowing 
the WM_SIZE and WM_MOVE messages to be generated and handled, when we 
should really fix such a bug instead of accidentally masking its existance.
I'm not comfortable removing this change from your patch since it will 
then need to be tested again to verify that things work as expected. Since 
you have already been testing it, I figured it would be easier for you to 
do the testing :)
I did extensive testing without that change, actually, because it
took me a while to figure out why the minimize button and sysmenus
worked but the taskbar left-click 2x didn't. ;)
You can remove it, but minimizing the window by 2x-clicking on the
Windows taskbar won't propagate the Z order change w/the same
messages as if you were to use the system menu or the minimize
button.  Why?  AFAICT the minimize button or menu item send a wm-move,
even if you don't let DefWindowProc() do its thing.  I suspect
Explorer sends its own messages when you click on the taskbar,
and they are not the same as the frame WndProc()'s.
FWIW I can't really see any reason not to allow DefWindowProc to have
a shot at the WM_WINDOWPOSCHANGED message, but I'll admit that I've
not gone through all of Kensuke's code...
-Earle F. Philhower, III
 [EMAIL PROTECTED]
 cdrlabel - ZipLabel - FlpLabel
 http://www.cdrlabel.com