summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--video/out/wayland_common.c9
-rw-r--r--video/out/wayland_common.h2
2 files changed, 8 insertions, 3 deletions
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;