]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix mouse-2 clicks on mode line and header line
authorEli Zaretskii <eliz@gnu.org>
Sun, 12 Jan 2025 06:22:24 +0000 (08:22 +0200)
committerEshel Yaron <me@eshelyaron.com>
Sun, 12 Jan 2025 14:58:57 +0000 (15:58 +0100)
* 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 c41ea047a434710c4b7bc8280695c83fbe5fff35)

src/keymap.c

index c0f49a7c1064fcfd67cf0680cd52fb9e2d749177..733d8d16031c38e81a5b8ea79877b51afefc94b7 100644 (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;
                }
            }