On 04/20/2015 04:05 AM, Carlos Garnacho wrote:

- The last touch drags the window, the previous ones remain static and
are eventually lifted. Why do they apply where your finger no longer
is? Why do they apply at all? can one of these touches create an
xdg_popup (and another grab on another touch) while window dragging is
going on?

It should send touch-moved events to the first client. So if they hold down their fingers on the painting program and then use the mouse to move the window, they will cause paintstrokes to be made.

Note as Wayland is currently designed the client is in control of whether any event moves it's window, so it will know if this is happening, and is free to either cancel the touch handling or not drag the window, if it does not like this.

- You're about to start some critical/expensive operation and the
screensaver kicks in before you lift the finger, because of low
battery. Should you be allowed to blindly get the operation started
while the system is preparing to halt/suspend?

Your actual question applies just as well to an expensive operation that was launched before the screensaver started, but is still running. Maybe there is a "battery is low and we are stopping" event that the client can use to stop or prevent the expensive operation. I think this event could be sent whether or not a grab is happening.

The screensaver should be blocked by server-started grabs (ie due to buttons being held down). Client-started grabs probably will survive and continue after the screensaver is unlocked.

I see this model falling apart really soon. I suggest we first
identify if there's usecases we're actually fixing here before we go
original about grabs/capturing as the user interaction paradigm.

Grabs are basically a contract, in which you get a guarantee that:
a) You get all input from that device
b) You are the only receiver of such input

Touch events are highly transient (eg. there's not even guarantee that
the touch starting the grab is the one that finishes it), as such it
doesn't make sense to grab on sequences individually, but on the whole
capability. This "we grab all future touches, we don't grab the past
ones though, except the triggering one" policy seems highly
inconsistent to me.

I certainly intended that all touches on the same device go to the same grab. Since the triggering one will be sent to the same client as the past ones which already caused a grab, your concern does not happen.

The problem is if there are multiple seats.

It is also possible that there are multiple grabs per seat, perhaps divided up by device, or perhaps sets of devices or devices split between grabs. I am unsure if this is necessary, I feel like there could be exactly one grab per seat and everything, including keystrokes, goes to the grab client.
_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to