lp://staging/~compiz-team/compiz-core/compiz-core.fix_860286

Created by Sam Spilsbury and last modified
Get this branch:
bzr branch lp://staging/~compiz-team/compiz-core/compiz-core.fix_860286
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

  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.

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