lp:~compiz-team/compiz-core/compiz-core.fix_858625

Created by Sam Spilsbury and last modified
Get this branch:
bzr branch lp:~compiz-team/compiz-core/compiz-core.fix_858625
Members of Compiz Maintainers can upload to this branch. Log in for directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
Compiz Maintainers
Project:
Compiz Core
Status:
Merged

Recent revisions

2839. By Sam Spilsbury

  Since we can reliably tell when windows are pending a restack, use that
  to determine if we should restack relative to this window anyways.

2838. By Sam Spilsbury

Revert unreviewed changes

2837. By Sam Spilsbury

Merge lp:compiz-core

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:compiz-core/0.9.5
This branch contains Public information 
Everyone can see this information.