xdg-activation: distinguish activation and urgency requests

Check if the app that requested a token has provided a valid input
serial and a focused surface. Downgrade activation request to urgency
otherwise.

This is mostly in line with what other Wayland compositors decided to
do, and offers a better security than the original logic.
This commit is contained in:
Aleksei Bavshin 2023-12-26 22:26:02 -08:00 committed by Ronan Pigott
parent f6d22f8e68
commit d19810eba8
5 changed files with 18 additions and 1 deletions

View file

@ -216,6 +216,8 @@ struct launcher_ctx *launcher_ctx_create(struct wlr_xdg_activation_token_v1 *tok
ctx->fallback_name = strdup(fallback_name);
ctx->token = token;
ctx->node = node;
// Having surface set means that the focus check in wlroots has passed
ctx->had_focused_surface = token->surface != NULL;
ctx->node_destroy.notify = ctx_handle_node_destroy;
wl_signal_add(&ctx->node->events.destroy, &ctx->node_destroy);