emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master c41ea047a43 1/2: Fix mouse-2 clicks on mode line and header line


From: Eli Zaretskii
Subject: master c41ea047a43 1/2: Fix mouse-2 clicks on mode line and header line
Date: Sun, 12 Jan 2025 01:25:29 -0500 (EST)

branch: master
commit c41ea047a434710c4b7bc8280695c83fbe5fff35
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>

    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)
---
 src/keymap.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/keymap.c b/src/keymap.c
index c0f49a7c106..733d8d16031 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -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;
                }
            }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]