From 5b1ab48abfe2d18a7fbb660b0c9eb5ac9a651fc0 Mon Sep 17 00:00:00 2001 From: Simon Long Date: Thu, 13 Jun 2024 10:57:34 +0100 Subject: [PATCH] Fix release keybindings being triggered after mouse bindings --- src/action.c | 4 ++++ src/input/keyboard.c | 5 +---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/action.c b/src/action.c index 6f6bee94..f8ce2f82 100644 --- a/src/action.c +++ b/src/action.c @@ -177,6 +177,8 @@ const char *action_names[] = { NULL }; +extern struct keybind *cur_keybind; + void action_arg_add_str(struct action *action, const char *key, const char *value) { @@ -707,6 +709,8 @@ actions_run(struct view *activator, struct server *server, return; } + cur_keybind = NULL; + struct view *view; struct action *action; wl_list_for_each(action, actions, link) { diff --git a/src/input/keyboard.c b/src/input/keyboard.c index bbadce22..d42650b3 100644 --- a/src/input/keyboard.c +++ b/src/input/keyboard.c @@ -38,7 +38,7 @@ struct keyinfo { static bool should_cancel_cycling_on_next_key_release; -static struct keybind *cur_keybind; +struct keybind *cur_keybind; /* Called on --reconfigure to prevent segfault when handling release keybinds */ void @@ -438,7 +438,6 @@ handle_compositor_keybindings(struct keyboard *keyboard, return true; } actions_run(NULL, server, &cur_keybind->actions, 0); - cur_keybind = NULL; return true; } else { return handle_key_release(server, event->keycode); @@ -488,8 +487,6 @@ handle_compositor_keybindings(struct keyboard *keyboard, key_state_store_pressed_key_as_bound(event->keycode); if (!cur_keybind->on_release) { actions_run(NULL, server, &cur_keybind->actions, 0); - /* This cancels any pending on-release keybinds */ - cur_keybind = NULL; } return true; }