RES: vt newcons 3 clicks mouse paste issue FIXED

From: Ivan Quitschal <tezeka_at_hotmail.com>
Date: Thu, 04 Aug 2022 14:04:27 UTC
Hi Hans

D36042 created
How can I include more patch files in the same defect number? D36042
https://reviews.freebsd.org/D36042

Its missing the vt.h.diff and vt_core.diff
Both attached

Should i have put all three in the raw patch creation combo box when I was creating the defect?
Sorry my dumbness  , never used that phabricator 

--tzk





> -----Mensagem original-----
> De: Ivan Quitschal <tezeka@hotmail.com>
> Enviada em: terça-feira, 2 de agosto de 2022 09:34
> Para: Hans Petter Selasky <hps@selasky.org>
> Cc: Tomoaki AOKI <junchoon@dec.sakura.ne.jp>; Ivan Quitschal
> <tezeka@hotmail.com>; freebsd-current@freebsd.org; Kurt Jaeger
> <pi@freebsd.org>
> Assunto: vt newcons 3 clicks mouse paste issue FIXED
> 
> 
> Hi guys
> 
> Currently , if you click 3 times in order to select the entire row, its just not
> working as it should.
> i fixed that please find below and attached the patches
> 
> With this change now we can do a 3 clicks and paste , i dont know, in some
> command, and it will be executed just fine, like it was in syscons, and still is in
> xterm/ linux etc
> 
> now if the event is a 3 mouse clickss select, the space trim is made on the right
> and an <enter> is included
> 
> thanks
> 
> --tzk
> 
> 
> --------------------
> --- sys/dev/vt/vt_buf.c.orig    2022-08-02 08:44:27.229782000 -0300
> +++ sys/dev/vt/vt_buf.c 2022-08-02 08:45:02.703697000 -0300
> @@ -771,7 +771,7 @@
>   }
> 
>   void
> -vtbuf_extract_marked(struct vt_buf *vb, term_char_t *buf, int sz)
> +vtbuf_extract_marked(struct vt_buf *vb, term_char_t *buf, int sz, int
> +mark)
>   {
>          int i, j, r, c, cs, ce;
>          term_pos_t s, e;
> @@ -799,7 +799,7 @@
>                          buf[i++] = vb->vb_rows[r][c];
> 
>                  /* For all rows, but the last one. */
> -               if (r != e.tp_row) {
> +               if (r != e.tp_row || mark == VTB_MARK_ROW) {
>                          /* Trim trailing word separators, if any. */
>                          for (; i != j; i--) {
>                                  if (!tchar_is_word_separator(buf[i - 1]))
> --------------------
> 
> --- sys/dev/vt/vt_core.c.orig   2022-08-02 08:43:15.436415000 -0300
> +++ sys/dev/vt/vt_core.c        2022-08-02 08:43:49.120096000 -0300
> @@ -2287,7 +2287,7 @@
>                          VD_PASTEBUFSZ(vd) = len;
>                  }
>                  /* Request copy/paste buffer data, no more than `len' */
> -               vtbuf_extract_marked(&vw->vw_buf, VD_PASTEBUF(vd), len);
> +               vtbuf_extract_marked(&vw->vw_buf, VD_PASTEBUF(vd), len,
> + mark);
> 
>                  VD_PASTEBUFLEN(vd) = len;
> 
> ---------------------
> 
> --- sys/dev/vt/vt.h.orig        2022-08-02 08:41:23.888584000 -0300
> +++ sys/dev/vt/vt.h     2022-08-02 08:41:54.504309000 -0300
> @@ -238,7 +238,7 @@
>   #ifndef SC_NO_CUTPASTE
>   int vtbuf_set_mark(struct vt_buf *vb, int type, int col, int row);
>   int vtbuf_get_marked_len(struct vt_buf *vb); -void
> vtbuf_extract_marked(struct vt_buf *vb, term_char_t *buf, int sz);
> +void vtbuf_extract_marked(struct vt_buf *vb, term_char_t *buf, int sz,
> +int
> mark);
>   #endif
> 
>   #define        VTB_MARK_NONE           0
> --------------------------