[PATCH 2/2] protocol: add state set functions for maximized and fullscreen.
Bill Spitzak
spitzak at gmail.com
Tue Nov 5 23:31:56 CET 2013
Gregory Merchan wrote:
>> - The compositor can send a "activate request event" saying that it would
>> like the client to activate.
>
> That is not what I described, mostly because I kept the new things to
> a minimum. It seems I hinted at but failed to explicitly mention what
> serves much the same purpose: the activation event could provide the
> signature for client activation requests. The hint was in my
> description of the convention for valid timestamps [ 4) a window
> manager message ] on X11, but I failed to mention an analog when I
> spoke of signatures in terms of Wayland events. This allows a client
> with a compositor-activated surface to instead activate another
> surface, but does not allow a refusal of activation except to make the
> surface incapable of activation, for example by destroying it.
Okay I think I understand now. Your scheme there is only
activate/deactivate events and an activate request from the client. I
think it will work and getting rid of 1/3 of the api (the activate
request event) is a huge win.
Since the client is entirely in control of the appearance of it's
surfaces, it can make it look like any surface is activated, without
glitches. It can then correct the compositor's pov by telling it with an
activation request of the correct surface. If the compositor has some
kind of pager/thumbnail display with some highlighting showing the
active surface it might be momentarily wrong but maybe those glitches
are ok.
> It is perhaps insufficient to have the compositor request that the
> client make a request without providing a reason for the compositor's
> request. The client would need to know if it being asked to activate
> itself because of Alt+Tab-like switch, viewport changes, or any of the
> other reasons a compositor might make the request of a client. This
> probably means another enumeration needs to be defined, and how might
> that enumeration grow?
I think/hope it is not necessary to distinguish these. My concern about
compositors sending activate request events on mouse enter and clicks
and the clients needing to distinguish these from alt+tab. But these are
not sent under what you are proposing.
> I don't know about "atomically combining", but I did describe an
> activation request.
It may not be necessary to atomically combine under what you propose.
> A "deactivate event" is not what I described; sending such an event is
> negating, not ignoring. What I have described leaves the client
> unaware that its request has been declined.
I would like a client sending an activate request to be able to assume
it is going to get the activation and update all it's surfaces as though
it had them, this will avoid one redraw and remove one round trip before
the screen is updated. But this will require that it get some indication
of failure so it can fix the display when this does not work.
> I think it's overstating to say I've put forth such a proposal. I
> indicated some possibilities and my preference, but I was trying to
> avoid putting forth a complete proposal. I was hoping to avoid what
> you describe as my proposal for parity with X, on which conventional
> clients do not use crossing events to request focus.
I think we are in agreement about what we want, just misunderstanding
each other. Clients *will* use the crossing events to request focus.
The fact that the client gets to decide whether it is click-to-type or
point-to-type is not a problem IMHO. It may even be a feature. There was
some resistance to that which got my discussion here very confused by
trying to come up with a scheme where the compositor decides.
> What you've described regarding sloppy focus--specifically, clients
> that might activate only when the pointer is in a particular
> control--is something I've never even seen suggested before. I think
> it might be helpful if you provided a description of how a system with
> such fine-grained sloppy focus would work and what the benefits would
> be over other systems.
If the "desktop" is a normal client then it has to have a way to say
that the mouse pointing at it does not take focus. If there is a text
field displayed (like if you started to rename an icon on a typical
Windows-style desktop) then it may make sense for the area of this icon
to take focus.
Also a rooted nested window manager could itself do sloppy focus where
the cursor has to point at one of it's windows, rather than the desktop,
to take focus away from one of the outside windows.
Some clients uninterested in text input (like a video player) may want
to require click-to-type (this then gets into how the video transport
keys are managed...)
More information about the wayland-devel
mailing list