aboutsummaryrefslogtreecommitdiff
path: root/rootston
diff options
context:
space:
mode:
Diffstat (limited to 'rootston')
-rw-r--r--rootston/cursor.c15
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;