diff --git a/CHANGELOG.md b/CHANGELOG.md index a30d6196..b4947c03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,8 @@ Notable changes to the `alacritty_terminal` crate are documented in its - New window being treated as focused when it's not on Wayland - IME preview blending into text below it - Dynamic title disabled for new windows when initial one has title as CLI option +- While terminal in mouse mode, mouse bindings that used the shift modifier and + had multiple actions only performed the first action ## 0.13.2 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> Processor { 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) {