diff options
author | emersion <contact@emersion.fr> | 2017-10-09 13:06:53 +0200 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2017-10-09 13:06:53 +0200 |
commit | f44c44502df83a6774947bce161784c51c79e645 (patch) | |
tree | 833f37ce78f410572435d6f2a6bfbd4e0b85f7c7 /rootston | |
parent | 4d157fe5de78d632548df8f523f04a53b5688417 (diff) |
Check client is focused before setting client cursor
Diffstat (limited to 'rootston')
-rw-r--r-- | rootston/cursor.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/rootston/cursor.c b/rootston/cursor.c index 106e054f..2df9bcb5 100644 --- a/rootston/cursor.c +++ b/rootston/cursor.c @@ -299,6 +299,21 @@ static void handle_request_set_cursor(struct wl_listener *listener, request_set_cursor); struct wlr_seat_pointer_request_set_cursor_event *event = data; + struct wlr_surface *focused_surface = NULL; + double sx, sy; + view_at(input->server->desktop, input->cursor->x, input->cursor->y, + &focused_surface, &sx, &sy); + bool ok = focused_surface != NULL; + if (focused_surface != NULL) { + struct wl_client *focused_client = + wl_resource_get_client(focused_surface->resource); + ok = event->client == focused_client; + } + if (!ok) { + wlr_log(L_DEBUG, "Denying request to set cursor outside view"); + return; + } + wlr_log(L_DEBUG, "Setting client cursor"); struct roots_output *output; |