mutter:wip/culling

Last commit made on 2013-11-25
Get this branch:
git clone -b wip/culling https://git.launchpad.net/mutter

Branch merges

Branch information

Name:
wip/culling
Repository:
lp:mutter

Recent commits

48b74b8... by Jasper St. Pierre

window: Separate pointer-focus operations and explicit-focus operations

Some clients, like on-screen keyboards, don't want their windows to be
activated on click, as that would steal focus from the window they're
trying to send events to. They do this by setting the Input Hint in
WM_HINTS to be FALSE, along with not specifying WM_TAKE_FOCUS in their
WM_PROTOCOLS.

However, in this case, when a window tries to get focus in this scenario,
we focus the frame so that a11y and key navigation works properly.
Both policies aren't acceptable -- we can't make OSK steal focus from
windows on click, and we can't make an OSK un-Alt-Tabbable-to.

To solve this, split meta_window_focus() into two different focus policies:

 * meta_window_focus_implicitly() should be called on pointer click or
   focus-follows-mouse or similar cases where we may not want to forcibly
   set focus for clients that don't want it.

 * meta_window_focus_explicitly() should be called by pagers, like
   the gnome-shell overview, or Alt-Tab. In this case, most of the existing
   clients are using meta_window_activate(), so simply adapting that so
   it calls meta_window_focus_explicitly() should be enough.

https://bugzilla.gnome.org/show_bug.cgi?id=715030

91c2225... by Jasper St. Pierre

window: Reword a condition to make it easier to understand

https://bugzilla.gnome.org/show_bug.cgi?id=715030

2aa24f2... by Jasper St. Pierre

Move autoraise callbacks into window.c

This matches what the wayland branch does, which allows us to share
code more easily.

https://bugzilla.gnome.org/show_bug.cgi?id=715030

4714425... by Jasper St. Pierre

cullable: Turn cull_out / reset_culling into a separate interface

Instead of hardcoded knowledge of certain classes in MetaWindowGroup,
create a generic interface that all actors can implement to get parts of
their regions culled out during redraw, without needing any special
knowledge of how to handle a specific actor.

The names now are a bit suspect. MetaBackgroundGroup is a simple
MetaCullable that knows how to cull children, and MetaWindowGroup is the
"toplevel" cullable that computes the initial two regions. A future
cleanup here could be to merge MetaWindowGroup / MetaBackgroundGroup so
that we only have a generic MetaSimpleCullable, and move the "toplevel"
cullability to be a MetaCullableToplevel.

https://bugzilla.gnome.org/show_bug.cgi?id=714706

d8c6607... by Jasper St. Pierre

window-actor: Move the operations we need to do when we cull out here

Soon, we'll move this into a generic MetaCullable interface, but for
now, just put hardcoded knowledge in MetaWindowGroup.

https://bugzilla.gnome.org/show_bug.cgi?id=714706

59a0113... by Jasper St. Pierre

window-group: Decompose culling operations into two methods

This also fixes a bug in the translation of clip_region.

We will add an interface for this soon, so we can recursively cull like this...

https://bugzilla.gnome.org/show_bug.cgi?id=714706

ce3804e... by Jasper St. Pierre

display: Use MetaWindow for auto-raise callbacks

This allows us to autoraise Wayland windows... well, except for the
XQueryPointer, but we'll replace that soon.

https://bugzilla.gnome.org/show_bug.cgi?id=715030

f0bc53c... by Jasper St. Pierre

display: Fix logic for determining whether our focus was successful

In some cases, we can focus the frame window instead of the client
window, so make sure that our checks include that as well.

https://bugzilla.gnome.org/show_bug.cgi?id=715030

b8938e9... by Jasper St. Pierre

window-actor: Fix a copy/paste typo

7116d9c... by Jasper St. Pierre

background-group: Fix cast warning