From f101762d1b357426834d062f9b97a8c5effc20b3 Mon Sep 17 00:00:00 2001 From: nicm <nicm> Date: Fri, 21 Mar 2025 14:04:26 +0000 Subject: [PATCH] Fix mouse_hyperlink format in copy mode. From someone in GitHub issue 4418. --- format.c | 6 ++++++ tmux.h | 1 + window-copy.c | 10 ++++++++++ 3 files changed, 17 insertions(+) diff --git a/format.c b/format.c index db2bcd8a..13e7f149 100644 --- a/format.c +++ b/format.c @@ -1173,6 +1173,12 @@ format_cb_mouse_hyperlink(struct format_tree *ft) return (NULL); if (cmd_mouse_at(wp, &ft->m, &x, &y, 0) != 0) return (NULL); + + if (!TAILQ_EMPTY(&wp->modes)) { + if (window_pane_mode(wp) != WINDOW_PANE_NO_MODE) + return (window_copy_get_hyperlink(wp, x, y)); + return (NULL); + } gd = wp->base.grid; return (format_grid_hyperlink(gd, x, gd->hsize + y, wp->screen)); } diff --git a/tmux.h b/tmux.h index 35577ae0..fcb064dd 100644 --- a/tmux.h +++ b/tmux.h @@ -3338,6 +3338,7 @@ char *window_copy_get_word(struct window_pane *, u_int, u_int); char *window_copy_get_line(struct window_pane *, u_int); int window_copy_get_current_offset(struct window_pane *, u_int *, u_int *); +char *window_copy_get_hyperlink(struct window_pane *, u_int, u_int); /* window-option.c */ extern const struct window_mode window_customize_mode; diff --git a/window-copy.c b/window-copy.c index 3a4f59bb..1dd12e45 100644 --- a/window-copy.c +++ b/window-copy.c @@ -884,6 +884,16 @@ window_copy_get_line(struct window_pane *wp, u_int y) return (format_grid_line(gd, gd->hsize + y)); } +char * +window_copy_get_hyperlink(struct window_pane *wp, u_int x, u_int y) +{ + struct window_mode_entry *wme = TAILQ_FIRST(&wp->modes); + struct window_copy_mode_data *data = wme->data; + struct grid *gd = data->screen.grid; + + return (format_grid_hyperlink(gd, x, gd->hsize + y, wp->screen)); +} + static void * window_copy_cursor_hyperlink_cb(struct format_tree *ft) {