diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-24 02:09:22 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-24 02:10:47 +0300 |
| commit | 58e812b238844fa05233eadc537081a1f0d06f36 (patch) | |
| tree | 61d071cf4a6c33b58cf8a35f56aa8174fe084252 /src/app/input/mod.rs | |
| parent | 36de78dd4fa4e2c203ee955f18caf82a6bca7e80 (diff) | |
fix: consume handled url click gestures
refs #1761
Diffstat (limited to 'src/app/input/mod.rs')
| -rw-r--r-- | src/app/input/mod.rs | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/src/app/input/mod.rs b/src/app/input/mod.rs index 738b7963..16713222 100644 --- a/src/app/input/mod.rs +++ b/src/app/input/mod.rs @@ -256,6 +256,31 @@ impl App { } pub(super) fn handle_mouse(&mut self, mouse: MouseEvent) { + self.handle_mouse_from_input_source(super::LOCAL_INPUT_SOURCE, mouse); + } + + pub(super) fn handle_mouse_from_input_source( + &mut self, + source_id: super::InputSourceId, + mouse: MouseEvent, + ) { + match mouse.kind { + MouseEventKind::Down(MouseButton::Left) => { + self.pending_url_click_sources.remove(&source_id); + } + MouseEventKind::Drag(MouseButton::Left) + if self.pending_url_click_sources.contains(&source_id) => + { + return; + } + MouseEventKind::Up(MouseButton::Left) + if self.pending_url_click_sources.remove(&source_id) => + { + return; + } + _ => {} + } + if self.state.popup_pane.is_some() { self.handle_popup_mouse(mouse); return; @@ -284,7 +309,7 @@ impl App { } } - if self.handle_modified_url_click(mouse) { + if self.handle_modified_url_click(source_id, mouse) { return; } @@ -469,7 +494,11 @@ impl App { self.focus_pane_internal_via_api(ws_idx, pane_id); } - fn handle_modified_url_click(&mut self, mouse: MouseEvent) -> bool { + fn handle_modified_url_click( + &mut self, + source_id: super::InputSourceId, + mouse: MouseEvent, + ) -> bool { if self.state.mode != Mode::Terminal || !matches!(mouse.kind, MouseEventKind::Down(MouseButton::Left)) || !mouse.modifiers.contains(modified_url_click_modifier()) @@ -490,6 +519,7 @@ impl App { }; self.last_pane_click = None; + self.pending_url_click_sources.insert(source_id); match self.invoke_plugin_link_handler_for_url(&url, info.id) { Ok(true) => return true, Ok(false) => {} |
