Comment 0 for bug 173303

Revision history for this message
Bogdan Butnaru (bogdanb) wrote :

Binary package hint: compiz

While I was posting the previous two window stacking bug reports, I
noticed another, similar problem:
(All this is about the latest Compiz from GIT, with "redirect
full-screen" _disabled_.)

Open two windows that you can easily tell apart. (It works with two
terminals, as long as they have different text on them.) Make them
both full-screen; you'll need the Extra WM Actions plugin. (F11,
Alt+Tab, F11.) The point is that you're supposed to have the two
topmost windows in full-screen mode, say A on top of B. The focus is
of course on A. Now "un-full-screen-ize" (?) the top window (A), by
pressing F11 again.

I would expect in that case the stacking order would remain unchanged,
i.e. a non-full-screen A on top of a full-screen B. However, A is
pushed below B! As in the previous bugs I posted, it keeps the focus,
though. You can see this by making the B window transparent before the
test, so you can see the typing in the A window through it.

In this case, after full-screen is turned off, the window is passed to
updateWindowAttributes() with the
stackingMode=CompStackingUpdateModeNormal. (The problematic call is in
the file "extrawm.c"). The function is fullscreenWindow(CompWindow*,
int). At the end (line 71 in my version) there's a call to

      updateWindowAttributes (w, CompStackingUpdateModeNormal)

However, changing from full-screen to non-full-screen should not
change the stacking. So I believe the call should be changed to:

      updateWindowAttributes (w, CompStackingUpdateModeNone)

I tried it, and the stacking works correctly.