From 5df2e990e33a027a4517f59aefad4c6be20d53bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sat, 6 Feb 2021 20:52:04 +0100 Subject: [PATCH] =?UTF-8?q?render:=20urls:=20don=E2=80=99t=20display=20URL?= =?UTF-8?q?s=20whose=20key=20sequence=20doesn=E2=80=99t=20match?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- render.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/render.c b/render.c index 4e41f48a..60b41dee 100644 --- a/render.c +++ b/render.c @@ -2546,6 +2546,7 @@ render_urls(struct terminal *term) const struct url *url = it->item.url; const wchar_t *text = url->text; const wchar_t *key = url->key; + const size_t entered_key_len = wcslen(term->url_keys); struct wl_surface *surf = it->item.surf; struct wl_subsurface *sub_surf = it->item.sub_surf; @@ -2553,13 +2554,21 @@ render_urls(struct terminal *term) if (surf == NULL || sub_surf == NULL) continue; + bool hide = false; const struct coord *pos = &url->start; const int _row = (pos->row - scrollback_end + term->grid->num_rows) & (term->grid->num_rows - 1); - if (_row < view_start || _row > view_end) { + if (_row < view_start || _row > view_end) + hide = true; + if (wcslen(key) <= entered_key_len) + hide = true; + if (wcsncmp(term->url_keys, key, entered_key_len) != 0) + hide = true; + + if (hide) { wl_surface_attach(surf, NULL, 0, 0); wl_surface_commit(surf); continue;