Ticket #3954: mc-3954-mouse-with-new-terminfo.patch

File mc-3954-mouse-with-new-terminfo.patch, 2.5 KB (added by egmont, 4 years ago)

Fix

  • lib/tty/key.c

    commit 472acdb6dd0d30e0642b9134a6fb2c1de4c18f35
    Author: Egmont Koblinger <egmont@gmail.com>
    Date:   Fri Feb 14 22:14:19 2020 +0100
    
        Ticket #3954: Fix mouse handling with newer terminfo entries
    
    diff --git a/lib/tty/key.c b/lib/tty/key.c
    index 1706755f3..96cd69517 100644
    a b tty_get_event (struct Gpm_Event *event, gboolean redo_event, gboolean block) 
    21272127#endif /* KEY_MOUSE */ 
    21282128                          || c == MCKEY_EXTENDED_MOUSE)) 
    21292129    { 
    2130         /* Mouse event */ 
    2131         xmouse_get_event (event, c == MCKEY_EXTENDED_MOUSE); 
     2130        /* Mouse event. See tickets 2956 and 3954 for extended mode detection. */ 
     2131        xmouse_get_event (event, c == MCKEY_EXTENDED_MOUSE 
     2132#ifdef KEY_MOUSE 
     2133                                 || (c == KEY_MOUSE && xmouse_seq == NULL && xmouse_extended_seq != NULL) 
     2134#endif /* KEY_MOUSE */ 
     2135                                 ); 
    21322136        c = (event->type != 0) ? EV_MOUSE : EV_NONE; 
    21332137    } 
    21342138    else if (c == MCKEY_BRACKETED_PASTING_START) 
  • lib/tty/mouse.c

    diff --git a/lib/tty/mouse.c b/lib/tty/mouse.c
    index e7616a74f..bfc94ed70 100644
    a b init_mouse (void) 
    9090 
    9191    case MOUSE_XTERM_NORMAL_TRACKING: 
    9292    case MOUSE_XTERM_BUTTON_EVENT_TRACKING: 
    93         define_sequence (MCKEY_MOUSE, xmouse_seq, MCKEY_NOACTION); 
    94         define_sequence (MCKEY_EXTENDED_MOUSE, xmouse_extended_seq, MCKEY_NOACTION); 
     93        if (xmouse_seq != NULL) 
     94        { 
     95            define_sequence (MCKEY_MOUSE, xmouse_seq, MCKEY_NOACTION); 
     96        } 
     97        if (xmouse_extended_seq != NULL) 
     98        { 
     99            define_sequence (MCKEY_EXTENDED_MOUSE, xmouse_extended_seq, MCKEY_NOACTION); 
     100        } 
    95101        break; 
    96102 
    97103    default: 
  • lib/tty/tty.c

    diff --git a/lib/tty/tty.c b/lib/tty/tty.c
    index 611a80b89..a02c004c3 100644
    a b tty_init_xterm_support (gboolean is_xterm) 
    361361        } 
    362362    } 
    363363 
    364     /* No termcap for SGR extended mouse (yet), hardcode it for now */ 
     364    /* There's only one termcap entry "kmous", typically containing "\E[M" or "\E[<". 
     365     * We need the former in xmouse_seq, the latter in xmouse_extended_seq. 
     366     * See tickets 2956 and 3954 for details. */ 
    365367    if (xmouse_seq != NULL) 
     368    { 
     369        if (strcmp (xmouse_seq, ESC_STR "[<") == 0) 
     370        { 
     371            xmouse_seq = NULL; 
     372        } 
    366373        xmouse_extended_seq = ESC_STR "[<"; 
     374    } 
    367375} 
    368376 
    369377/* --------------------------------------------------------------------------------------------- */