lp://staging/~compiz-team/compiz-core/compiz-core.fix_860286
- Get this branch:
- bzr branch lp://staging/~compiz-team/compiz-core/compiz-core.fix_860286
Branch merges
- Robert Carr (community): Approve
-
Diff: 81 lines (+16/-9)2 files modifiedplugins/composite/src/window.cpp (+4/-4)
plugins/opengl/src/paint.cpp (+12/-5)
Related bugs
Related blueprints
Branch information
Recent revisions
- 2839. By Sam Spilsbury
-
Allow other plugins to draw decorations on windows that may not have received damage
events yet, but don't draw the undamaged window itself.Rationale: Some (buggy) applications may map windows which have not yet been
drawn on, this would cause their input shape and frame window to block input
for other applications. This makes it clear to the user that that window
*is* there, so they can deal with it appropriately. For the largest usecase
of requiring a damage event before displaying a window which is override redirect
windows, this commit has no effect since those window don't get decorations anyways. - 2836. By Sam Spilsbury
-
Notify plugins of unreparent after we have invalidated the frame and wrapper
reference otherwise they could call through to configureXWindow and request
movement of the client to 0,0 within the frame, when in fact that frame is
destroyed and the client is a child of the root window. - 2835. By Sam Spilsbury
-
Also update serverFrameGeometry and frameGeometry whenever an unreparented
window is configured to ensure that it will not be out of date when
the window is later reparented. - 2834. By Sam Spilsbury
-
Track ConfigureWindow requests and match them to ConfigureNotify events.
By doing this we are able to see what the pending requests are on a window
at any given time, and can transform new requests to suit these pending
ones. Currently, this only works for windows that we reparent and are
not override redirect since those are the only windows where we can guaruntee
that all ConfigureNotify events will be generated by us.This isn't exposed to plugins at the moment, but it may be useful later on.
Incidentally, this allows us to fix a stacking corner case which was the
following situation:Windows A, B and C map (placed on top), and must stack relative to each other
Window A gets stacked beneath D (which is a panel),
Window B should be stacked above A,
Window C should be stacked above B,What happened was that updateAttributes would be called and
request to put window B above A, which it was already above in
CompScreen::windows, so that stacking request becomes a no-op. In this case
we check if the window is pending a restack and then request to put it
above the same window it was already a sibling to if findSiblingBelow found
that to be the case.This fixes problems with, eg GIMP and Libreoffice, which make heavy use
of transient windows when mapping their windows and may also restack
their own windows when there is no window manager running
Branch metadata
- Branch format:
- Branch format 7
- Repository format:
- Bazaar repository format 2a (needs bzr 1.16 or later)
- Stacked on:
- lp://staging/compiz-core/0.9.5