Subject: bug#41343: tab-bar-mode: Close tab on mouse-2 click

From: Juri Linkov <[email-masked]>
Date: Fri, 06 Aug 2021 03:41:17 +0300

>> > Do we really have to hard-code the mouse button this way, including
>> > explicit values in C?  Why is that necessary or justified?
>>
>> In tab-line.el it was very easy to bind mouse-2 to close the tab:
>>
>>   (defvar tab-line-tab-map
>>     (let ((map (make-sparse-keymap)))
>>       (define-key map [tab-line mouse-1] 'tab-line-select-tab)
>>       (define-key map [tab-line mouse-2] 'tab-line-close-tab)
>>
>> But it's impossible to do the same for the menu-bar and the tool-bar
>> and so in the tab-bar too.
>
> Why not?  What prevents that?

It's too late to change how keys are implemented for tab-bar.
The tab-bar keymap contains such keys as 'tab-1' and 'C-tab-2',
and clicking mouse-1 on tabs emits such events.  It doesn't emit
'mouse-1' and 'mouse-2'.

>> Or do you mean adding an integer variable that holds
>> a number of the mouse button used to close the tab?
>> For example, tab-bar-close-tab-mouse-button = 2.
>
> I think we should explore such possibilities only after we understand
> why normal key bindings don't work.

It should be possible to implement normal key bindings mouse-1/mouse-2,
but such change will not be backward-compatible.