From: Eli Zaretskii Date: Thu, 21 May 2015 16:38:19 +0000 (+0300) Subject: Fix a minor problem with mouse-face on mode line X-Git-Tag: emacs-25.0.90~2024 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=fc071bf7c6a300f52142b92cf99c5a0e63b3e235;p=emacs.git Fix a minor problem with mouse-face on mode line * src/xdisp.c (note_mode_line_or_margin_highlight): Reset the mouse face also if the mouse pointer hovers above mode-line glyphs that don't come from any Lisp string. (Bug#20620) --- diff --git a/src/xdisp.c b/src/xdisp.c index 8123719ed48..87f110e667d 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -29159,6 +29159,7 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y, } /* Change the mouse face according to what is under X/Y. */ + bool mouse_face_shown = false; if (STRINGP (string)) { mouse_face = Fget_text_property (pos, Qmouse_face, string); @@ -29281,13 +29282,18 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y, glyph->face_id, true); show_mouse_face (hlinfo, DRAW_MOUSE_FACE); + mouse_face_shown = true; if (NILP (pointer)) pointer = Qhand; } - else if ((area == ON_MODE_LINE) || (area == ON_HEADER_LINE)) - clear_mouse_face (hlinfo); } + + /* If mouse-face doesn't need to be shown, clear any existing + mouse-face. */ + if ((area == ON_MODE_LINE || area == ON_HEADER_LINE) && !mouse_face_shown) + clear_mouse_face (hlinfo); + #ifdef HAVE_WINDOW_SYSTEM if (FRAME_WINDOW_P (f)) define_frame_cursor1 (f, cursor, pointer);