rob at robster.org.uk
Tue Dec 6 11:28:49 PST 2011
I've been tracking down an issue in the GTK+ Wayland implementation.
The problem is that if you've started to resize the window using the
grip all future events get interpretted as a resize events even if
you're nowhere near the resize grip?
The explanation: by default GDK behaviour is such that when you button
down on something then a pointer grab is created so all motion events
continue to go to the GdkWindow in which you originally buttoned down
in. When the button is released that pointer grab goes away. However
if we call wl_shell_surface_resize we never get the release event and
so GDK still thinks that the resize window still has the pointer grab.
We don't get that release event because of the grab that the shell
takes upon starting the resize which is pretty reasonable.
One proposed solution is to ensure that the shell and compositor
propagates the release event (which is currently in the grab in the
shell) across to the client. This would ensure that the down and
released events are always paired up.
Anybody have any other thoughts?
More information about the wayland-devel