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>
diff --git a/clients/window.c b/clients/window.c
index 6941201..47628de 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -2746,12 +2746,13 @@
 
 	/* 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)) {