diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-07-21 11:23:48 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-07-22 23:10:19 +1000 |
commit | 9df660ee3188386c907d8feb999636ce8d61d095 (patch) | |
tree | eb9343b66221d664ac995995d7bcceb45d25ee94 /sway/desktop/xdg_shell_v6.c | |
parent | Prevent re-uploading the same cursor image multiple times (diff) | |
download | sway-9df660ee3188386c907d8feb999636ce8d61d095.tar.gz sway-9df660ee3188386c907d8feb999636ce8d61d095.tar.zst sway-9df660ee3188386c907d8feb999636ce8d61d095.zip |
Store last button and use it when views request to move or resize
Diffstat (limited to 'sway/desktop/xdg_shell_v6.c')
-rw-r--r-- | sway/desktop/xdg_shell_v6.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/sway/desktop/xdg_shell_v6.c b/sway/desktop/xdg_shell_v6.c index 241bd9b0..4bd6af5e 100644 --- a/sway/desktop/xdg_shell_v6.c +++ b/sway/desktop/xdg_shell_v6.c | |||
@@ -1,9 +1,4 @@ | |||
1 | #define _POSIX_C_SOURCE 199309L | 1 | #define _POSIX_C_SOURCE 199309L |
2 | #ifdef __linux__ | ||
3 | #include <linux/input-event-codes.h> | ||
4 | #elif __FreeBSD__ | ||
5 | #include <dev/evdev/input-event-codes.h> | ||
6 | #endif | ||
7 | #include <stdbool.h> | 2 | #include <stdbool.h> |
8 | #include <stdlib.h> | 3 | #include <stdlib.h> |
9 | #include <wayland-server.h> | 4 | #include <wayland-server.h> |
@@ -254,7 +249,9 @@ static void handle_request_move(struct wl_listener *listener, void *data) { | |||
254 | struct sway_view *view = &xdg_shell_v6_view->view; | 249 | struct sway_view *view = &xdg_shell_v6_view->view; |
255 | struct wlr_xdg_toplevel_v6_move_event *e = data; | 250 | struct wlr_xdg_toplevel_v6_move_event *e = data; |
256 | struct sway_seat *seat = e->seat->seat->data; | 251 | struct sway_seat *seat = e->seat->seat->data; |
257 | seat_begin_move(seat, view->swayc); | 252 | if (e->serial == seat->last_button_serial) { |
253 | seat_begin_move(seat, view->swayc, seat->last_button); | ||
254 | } | ||
258 | } | 255 | } |
259 | 256 | ||
260 | static void handle_request_resize(struct wl_listener *listener, void *data) { | 257 | static void handle_request_resize(struct wl_listener *listener, void *data) { |
@@ -263,7 +260,9 @@ static void handle_request_resize(struct wl_listener *listener, void *data) { | |||
263 | struct sway_view *view = &xdg_shell_v6_view->view; | 260 | struct sway_view *view = &xdg_shell_v6_view->view; |
264 | struct wlr_xdg_toplevel_v6_resize_event *e = data; | 261 | struct wlr_xdg_toplevel_v6_resize_event *e = data; |
265 | struct sway_seat *seat = e->seat->seat->data; | 262 | struct sway_seat *seat = e->seat->seat->data; |
266 | seat_begin_resize(seat, view->swayc, BTN_LEFT, e->edges); | 263 | if (e->serial == seat->last_button_serial) { |
264 | seat_begin_resize(seat, view->swayc, seat->last_button, e->edges); | ||
265 | } | ||
267 | } | 266 | } |
268 | 267 | ||
269 | static void handle_unmap(struct wl_listener *listener, void *data) { | 268 | static void handle_unmap(struct wl_listener *listener, void *data) { |