summaryrefslogtreecommitdiffstats
path: root/alacritty
diff options
context:
space:
mode:
authorEBADBEEF <errno@ebadf.com>2024-05-16 14:15:20 -0700
committerGitHub <noreply@github.com>2024-05-16 21:15:20 +0000
commit38fed9a7c233e11e5f62433298235281fc3de885 (patch)
treecbe18a01980f6a5b34e04ba131016ca6744079c6 /alacritty
parent3cd35dfe7efe894853ac9251891b37baee440002 (diff)
Fix mouse mode bindings with multiple actions
The following config was broken: ``` [mouse] bindings = [ { mouse = "Right", mods = "Shift", action = "Copy" }, { mouse = "Right", mods = "Shift", action = "ClearSelection" }, ] ``` Only the first action was applied. Change to allow more than one exact match in mouse mode with shift held, but keep the logic to not allow fallback search if any exact match was found. Regression was introduced in 1a143d11.
Diffstat (limited to 'alacritty')
-rw-r--r--alacritty/src/input/mod.rs9
1 files changed, 5 insertions, 4 deletions
diff --git a/alacritty/src/input/mod.rs b/alacritty/src/input/mod.rs
index 095e8737..4900e26f 100644
--- a/alacritty/src/input/mod.rs
+++ b/alacritty/src/input/mod.rs
@@ -1004,17 +1004,18 @@ impl<T: EventListener, A: ActionContext<T>> Processor<T, A> {
let mouse_bindings = self.ctx.config().mouse_bindings().to_owned();
// If mouse mode is active, also look for bindings without shift.
- let mut check_fallback = mouse_mode && mods.contains(ModifiersState::SHIFT);
+ let fallback_allowed = mouse_mode && mods.contains(ModifiersState::SHIFT);
+ let mut exact_match_found = false;
for binding in &mouse_bindings {
// Don't trigger normal bindings in mouse mode unless Shift is pressed.
- if binding.is_triggered_by(mode, mods, &button) && (check_fallback || !mouse_mode) {
+ if binding.is_triggered_by(mode, mods, &button) && (fallback_allowed || !mouse_mode) {
binding.action.execute(&mut self.ctx);
- check_fallback = false;
+ exact_match_found = true;
}
}
- if check_fallback {
+ if fallback_allowed && !exact_match_found {
let fallback_mods = mods & !ModifiersState::SHIFT;
for binding in &mouse_bindings {
if binding.is_triggered_by(mode, fallback_mods, &button) {