aboutsummaryrefslogtreecommitdiff
path: root/src/app/input/mod.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-07-24 02:09:22 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-07-24 02:10:47 +0300
commit58e812b238844fa05233eadc537081a1f0d06f36 (patch)
tree61d071cf4a6c33b58cf8a35f56aa8174fe084252 /src/app/input/mod.rs
parent36de78dd4fa4e2c203ee955f18caf82a6bca7e80 (diff)
fix: consume handled url click gestures
refs #1761
Diffstat (limited to 'src/app/input/mod.rs')
-rw-r--r--src/app/input/mod.rs34
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) => {}