Re: RES: vt newcons 3 clicks mouse paste issue FIXED

From: Toomas Soome <tsoome_at_me.com>
Date: Thu, 04 Aug 2022 14:33:05 UTC

> On 4. Aug 2022, at 17:04, Ivan Quitschal <tezeka@hotmail.com> wrote:
> 
> 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

You may want to check ‘git arc’ (https://freebsdfoundation.org/wp-content/uploads/2021/11/FreeBSD-Code-Review-with-git-arc.pdf <https://freebsdfoundation.org/wp-content/uploads/2021/11/FreeBSD-Code-Review-with-git-arc.pdf>)

rgds,
toomas

> 
> 
> 
> 
> 
>> -----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
>> --------------------------
> <vt.h.diff><vt_core.diff>