diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c index 109e2dc4b0..fedb0fc561 100644 --- a/video/out/wayland_common.c +++ b/video/out/wayland_common.c @@ -337,9 +337,11 @@ static void pointer_handle_motion(void *data, struct vo_wayland_state *wl = data; wl->cursor.pointer = pointer; + wl->window.surf_x = wl_fixed_to_int(sx_w); + wl->window.surf_y = wl_fixed_to_int(sy_w); - vo_mouse_movement(wl->vo, wl_fixed_to_int(sx_w), - wl_fixed_to_int(sy_w)); + vo_mouse_movement(wl->vo, wl->window.surf_x, + wl->window.surf_y); } static void pointer_handle_button(void *data, @@ -355,7 +357,8 @@ static void pointer_handle_button(void *data, ((state == WL_POINTER_BUTTON_STATE_PRESSED) ? MP_KEY_STATE_DOWN : MP_KEY_STATE_UP)); - if ((button == BTN_LEFT) && (state == WL_POINTER_BUTTON_STATE_PRESSED)) + if (!mp_input_test_dragging(wl->vo->input_ctx, wl->window.surf_x, wl->window.surf_y) && + (button == BTN_LEFT) && (state == WL_POINTER_BUTTON_STATE_PRESSED)) wl_shell_surface_move(wl->window.shell_surface, wl->input.seat, serial); } diff --git a/video/out/wayland_common.h b/video/out/wayland_common.h index 71f4a7481a..483c0ef1dd 100644 --- a/video/out/wayland_common.h +++ b/video/out/wayland_common.h @@ -71,6 +71,8 @@ struct vo_wayland_state { float aspect; struct wl_surface *surface; + int32_t surf_x; + int32_t surf_y; struct wl_shell_surface *shell_surface; int events; /* mplayer events (VO_EVENT_RESIZE) */ } window;