Gregory Merchan wrote:

No the client must be in control and decide it does *not* want to be
activated.

"Sloppy focus, as a system-wide policy" refers to the list of 5
policies which I gave in my first message in this thread. That is a
policy which does not allow clients such control. (Did I mention that
I think that and the rest of the first four policies suck?)

I *think* we are both describing the same thing (your "policy 5") but using different terms. Wayland should only have exactly one "policy" which I will try to describe, to see if we are talking about the same thing:

- The compositor can send a "activate request event" saying that it would like the client to activate.

- The client can send "activate request". This can be atomically combined with other changes to surfaces such as resizing, changing buffers, raising, and mapping/unmapping.

- The compositor can ignore the request, in which case it sends a "deactivate event" so the client knows it did not happen (note that I really want mis-matched activate/deactivate events or this is impossible!). Or

- The compositor can obey the request. If it receives requests out-of-order from multiple clients it is expected to do a reasonable job of replicating the result of them being in-order.

Things that are *not* allowed:

- The compositor cannot do any of these actions unless the client requests it (this is not physically enforced but clients assume it).

- The client cannot force anything to happen. It's request can always be ignored.

Now the question is how to get the "policies" that the user sees. I see three ways of doing this. To simplify lets assume only sloppy focus and click-to-type are wanted:

1. My proposal: Client knows which policy is in effect. If sloppy focus it sends an activate request on mouse enter. If click-to-type it sends it on mouse clicks. Compositor obeys these. The annoyance here is that clients may disagree about policy.

2. Jason's proposal: Compositor knows which policy is in effect. If sloppy focus it sends an activate request event on mouse enter, if click-to-type it sends it on mouse clicks. Client echoes these as activate requests and the compositor obeys these. The annoyance here is that non-trivial clients will need to figure out why it was sent the activate request event because it has to treat Alt-Tab differently than mouse-enter.

3. Your proposal: Client sends activate requests on *both* mouse-enter and mouse clicks. Compositor knows which policy is in effect, and ignores the incorrect activate requests. A problem I see is that to get glitch-free update the client will have to figure out if sloppy focus is on so it knows whether to draw surfaces activated when sending the request on mouse enter. However I feel this is not a huge bug and thus like this the best now.

Your description of #3:
A compositor not using sloppy focus could indeed ignore
signatures from crossing events, so it would be OK for clients to make
the request in any environment, but if it is not necessary then I
think it should not be done.


_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to