clients: don't discard motion if we have a grab
We discard motion outside the window on the assumption it's from before some event that caused the window to shrink. However, if we have a grab it's likely that this motion is actually from dragging from the inside of the window out. This fixes a problem where drag selecting in weston terminal behaves oddly - it doesn't update the select region while the drag is happening outside the window. Signed-off-by: Derek Foreman <derekf@osg.samsung.com> Tested-by: Luis de Bethencourt <luisbg@osg.samsung.com> Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
This commit is contained in:
parent
5d13548c7e
commit
46812b6e71
@ -2746,12 +2746,13 @@ pointer_handle_motion(void *data, struct wl_pointer *pointer,
|
||||
|
||||
/* when making the window smaller - e.g. after a unmaximise we might
|
||||
* still have a pending motion event that the compositor has picked
|
||||
* based on the old surface dimensions
|
||||
* based on the old surface dimensions. However, if we have an active
|
||||
* grab, we expect to see input from outside the window anyway.
|
||||
*/
|
||||
if (sx < window->main_surface->allocation.x ||
|
||||
if (!input->grab && (sx < window->main_surface->allocation.x ||
|
||||
sy < window->main_surface->allocation.y ||
|
||||
sx > window->main_surface->allocation.width ||
|
||||
sy > window->main_surface->allocation.height)
|
||||
sy > window->main_surface->allocation.height))
|
||||
return;
|
||||
|
||||
if (!(input->grab && input->grab_button)) {
|
||||
|
Loading…
Reference in New Issue
Block a user