one pointer can exist in only one output, once find the output, break the loop
Signed-off-by: Xiong Zhang <[email protected]> --- src/input.c | 7 +++++-- src/shell.c | 2 ++ src/zoom.c | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/input.c b/src/input.c index 85b772f..6b26f3c 100644 --- a/src/input.c +++ b/src/input.c @@ -614,11 +614,14 @@ move_pointer(struct weston_seat *seat, wl_fixed_t x, wl_fixed_t y) ix = wl_fixed_to_int(x); iy = wl_fixed_to_int(y); - wl_list_for_each(output, &ec->output_list, link) + wl_list_for_each(output, &ec->output_list, link) { if (output->zoom.active && pixman_region32_contains_point(&output->region, - ix, iy, NULL)) + ix, iy, NULL)) { weston_output_update_zoom(output, ZOOM_FOCUS_POINTER); + break; + } + } if (pointer->sprite) { weston_surface_set_position(pointer->sprite, diff --git a/src/shell.c b/src/shell.c index 0efdd1d..7ff8697 100644 --- a/src/shell.c +++ b/src/shell.c @@ -2875,6 +2875,8 @@ do_zoom(struct weston_seat *seat, uint32_t time, uint32_t key, uint32_t axis, output->zoom.spring_z.target = output->zoom.level; weston_output_update_zoom(output, output->zoom.type); + + break; } } } diff --git a/src/zoom.c b/src/zoom.c index 220b2b6..7f28862 100644 --- a/src/zoom.c +++ b/src/zoom.c @@ -115,6 +115,7 @@ weston_text_cursor_position_notify(struct weston_surface *surface, output->zoom.text_cursor.x = global_x; output->zoom.text_cursor.y = global_y; weston_output_update_zoom(output, ZOOM_FOCUS_TEXT); + break; } } -- 1.8.3.2 _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
