summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Preisinger <alexander.preisinger@gmail.com>2013-09-24 19:15:55 +0200
committerwm4 <wm4@nowhere>2013-10-20 14:11:25 +0200
commit7078df4f5e528a0689d88e398f0494701cdd4deb (patch)
tree5e6e16a6499671c90e115899226205937130b1cd
parent8e642809bf50dd6fd41075eb71df6990ded131ac (diff)
downloadmpv-7078df4f5e528a0689d88e398f0494701cdd4deb.tar.bz2
mpv-7078df4f5e528a0689d88e398f0494701cdd4deb.tar.xz
wayland: use mp_input_test_dragging
Instead of removing dragging we now test if it we should drag the window or not. Because if the OSC shows up we can not drag the window because that would cause mouse events that makes the OSC disappear.
-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;