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 <[email protected]> --- clients/window.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/clients/window.c b/clients/window.c index 52de248..9c20480 100644 --- a/clients/window.c +++ b/clients/window.c @@ -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)) { -- 2.4.6 _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
