Date: Fri, 25 Feb 2022 16:22:53 GMT From: Ed Maste <emaste@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Subject: git: f6a7ce86fc2d - stable/13 - vt: fix double-click word selection for first/last word on line Message-ID: <202202251622.21PGMrxU044702@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch stable/13 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=f6a7ce86fc2d2d13f169ff7b5f147858c445ec67 commit f6a7ce86fc2d2d13f169ff7b5f147858c445ec67 Author: Ed Maste <emaste@FreeBSD.org> AuthorDate: 2022-02-21 04:09:36 +0000 Commit: Ed Maste <emaste@FreeBSD.org> CommitDate: 2022-02-25 16:22:27 +0000 vt: fix double-click word selection for first/last word on line Previously when double-clicking on the first word on a line we would select from the cursor position to the end of the word, not from the beginning of the line. Similarly, when double-clicking on the last word on a line we would select from the beginning of the word to the cursor position rather than the end of the line. This is because we searched backward or forward for a space character to mark the beginning or end of a word. Now, use the beginning or end of the line if we do not find a space. PR: 261553 Sponsored by: The FreeBSD Foundation (cherry picked from commit 692bb3f0291b21337eb9a778f71a5b97a47e4c11) (cherry picked from commit 521dbfd6b1085511769c419d44f11842e92067f5) --- sys/dev/vt/vt_buf.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sys/dev/vt/vt_buf.c b/sys/dev/vt/vt_buf.c index 9c9417d6eca4..996dbe95902f 100644 --- a/sys/dev/vt/vt_buf.c +++ b/sys/dev/vt/vt_buf.c @@ -816,12 +816,19 @@ vtbuf_set_mark(struct vt_buf *vb, int type, int col, int row) break; } } + /* No space - word extends to beginning of line. */ + if (i == -1) + vb->vb_mark_start.tp_col = 0; for (i = col; i < vb->vb_scr_size.tp_col; i ++) { if (TCHAR_CHARACTER(r[i]) == ' ') { vb->vb_mark_end.tp_col = i; break; } } + /* No space - word extends to end of line. */ + if (i == vb->vb_scr_size.tp_col) + vb->vb_mark_end.tp_col = i; + if (vb->vb_mark_start.tp_col > vb->vb_mark_end.tp_col) vb->vb_mark_start.tp_col = vb->vb_mark_end.tp_col; break;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202202251622.21PGMrxU044702>