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]

window focus, raise, and stacking order


I have discovered what I believe to be a bug in the window manager code
part of the cygwin/X server.  It is an interaction between the
point-to-focus setting in Windows (a.k.a. "Activation follows mouse" in
TweakUI) and raising windows.

Scenario:

With the "Activation follows mouse (X-Mouse)" setting of TweakUI set,
arrange at least two (X) windows so that a portion of them overlap. 
Call the window on top window A and the one below window B.  With the
focus on window A, move the pointer to window B (via any path).  Window
B will now (correctly) have focus.  Click on the title bar, edge of
frame, or within the contents of window B.  It will now partially raise.
 That is, the frame of window B will now be drawn correctly over window
A, but the stacking of the content of the windows is still in the
original (A over B) order.  I do not think it is just s refresh issue
because updates to the content area of window B are shown as if it were
on top.  The situation will correct itself (the windows in X will have
the same stacking as the MS window frames around them) when either: 1)
focus is given to some other X window other than window B (including a
window which has no overlap with either window A or window B) or 2)
focus is given to a non-X window and then to any X window (including
window B).  If focus is taken from window B and given to no other window
(say by moving the pointer over the desktop and not another window), and
then focus is given back to window B, the focus is correctly assigned
but the stacking order is not corrected.

System specifications:

Windows 2000 Professional
cygwin 1.5.9-1
XFree86-xserv 4.3.0-64
XWin invocation from modified startxwin.bat: start XWin -multiwindow
-clipboard

Postscript:

As I have been writing up this bug report and testing all the cases, I
noticed there was a new version of XFree86-xserv available.  I upgraded
to XFree86-xserv 4.3.0-65 (I saw -66 announced, but it wasn't on the
mirror I use and I wasn't sure which server was the canonical one).  The
problem is still there with one minor modification.  Once window B's
frame is over window A's (but it's content is still below window A), the
stacking order is corrected through either previous method _except_ if
the focus is given back to window A.  Perhaps a chart will clarify when
the stacking order is corrected and when it is not:

focus B -> no focus -> focus B => not corrected
focus B -> no focus -> focus A => not corrected
focus B -> no focus -> focus C => corrected
focus B -> focus MS -> focus A => not corrected
focus B -> focus MS -> focus B or C (any X window except A) =>
corrected
focus B -> focus A => not corrected
focus B -> focus A -> focus B or C (any X window except A) =>
corrected

Please let me know if there is any other information that you need to
track this down.  Thank you.

Brian Diggs




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