This is the mail archive of the cygwin-xfree@cygwin.com mailing list for the Cygwin XFree86 project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: Popups popping through windows using built-in rootless WM


On Friday, May 20, 2005 10:51 AM, Alexander Gottwald wrote:

> Anyway, tooltips which appear on top of any other window are not a bug
in my
> opinion. They appear topmost in windowed mode too.

The problem is not that the popups appear on top.  It is that the
mouse position reports are passed to the obscured application window
(even if its minimised).

I *think* this is only a problem if there is another X window that is
higher in the stacking order than the focussed non-X window.  The
second X window doesn't have to overlap the non-X window.

I use the VirtuaWin virtual window manager which IIRC works by
minimising the windows that are on the hidden desktops.  This bug
means that windows on hidden desktops pop up tooltips - very
confusing!

I think the problem is that X gets confused about the stacking order
when X windows are mixed with non-X windows.  This might be a hangover
from the original rootless mode where all X windows were at the same
stacking level as far as Windows was concerned (i.e. a non-X window
could never sit between two X windows)

A closely related issue which may throw light on the problem is that
an X window on a hidden desktop displays in the client area of an X
window on the active desktop if their screen coordinates overlap, and
if the hidden window is logically higher in X's stacking order.

To reproduce this, you'll need VirtuaWin, available from
http://virtuawin.sourceforge.net

The steps are:
- Switch to Desk1
- Open an X application (call it X1)
- Open a non-X window (call it W1) to at least partially obsure X1
  (the key point is that X1 must not be on top)
- Switch to Desk2
- Open an X application (call it X2) and position it so that it would
  overlap X1 if they were on the same desktop.
- Open a non-X window (call it W2) to at least partially obsure X2
- Bring X2 to the front (thereby ensuring that it's "above" X1)
- Bring W2 to the front and keep the pointer in part of W2 that is
  outside of both X1 and X2.  (I think the main thing here is that
  neither X window should have, or get, the focus when the desktops
  are switched.  I use the X-mouse tweak so the window under the mouse
  would be focussed) 

The logical stacking order is now (bottom to top): X1, W1, X2, W2

- now switch back to Desk1

The client area (but not the frame) of X2 that would overlap X1 if
they were on the same desktop is displayed on top of X1.

Note that the displayed part of X2 is actively drawn over the top of
X1, as opposed to just being left behind.  Also, moving the mouse over
the widgets of X2 (e.g. the scrollbar) causes the cursor to change as
if X2 was genuinely on top.

Whilst the above seems an unlikely sequence of events, in practice
it's very easy to get this happening, but it's not easy to predict.

If you'd like me to test any fix before releasing it into the wild,
I'll be glad to help after the weekend.

Phil


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]