Fix mouse-2 clicks on mode line and header line

* src/keymap.c (Fcurrent_active_maps): For clicks on mode-line and
header-line, always override the keymaps at buffer position.
(Bug#75219)

(cherry picked from commit c41ea047a4)
This commit is contained in:
Eli Zaretskii 2025-01-12 08:22:24 +02:00
parent 6f5c322f59
commit b3181a8071

View file

@ -1740,17 +1740,27 @@ like in the respective argument of `key-binding'. */)
if (CONSP (string) && STRINGP (XCAR (string)))
{
Lisp_Object pos = XCDR (string);
Lisp_Object pos_area = POSN_POSN (position);
string = XCAR (string);
if (FIXNUMP (pos)
&& XFIXNUM (pos) >= 0
&& XFIXNUM (pos) < SCHARS (string))
{
Lisp_Object map = Fget_text_property (pos, Qlocal_map, string);
if (!NILP (map))
Lisp_Object map = Fget_text_property (pos, Qlocal_map,
string);
/* For clicks on mode line or header line, override
the maps we found at POSITION unconditionally, even
if the corresponding properties of the mode- or
header-line string are nil, because propertries at
point are not relevant in that case. */
if (!NILP (map)
|| EQ (pos_area, Qmode_line)
|| EQ (pos_area, Qheader_line))
local_map = map;
map = Fget_text_property (pos, Qkeymap, string);
if (!NILP (map))
if (!NILP (map)
|| EQ (pos_area, Qmode_line)
|| EQ (pos_area, Qheader_line))
keymap = map;
}
}