bug#3686: 23.1.50; Sticky mouse-face highlighting

From:

Stephen Berman

Subject:

bug#3686: 23.1.50; Sticky mouse-face highlighting

Date:

Fri, 26 Jun 2009 09:59:54 +0200

User-agent:

Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux)

1. Create the file ~/test.el with this content:
(setq diary-display-function 'diary-fancy-display
diary-number-of-entries 7)
2. Create the file ~/diary with this content:
Jun 26, 2009 10:00 This is a test
Jun 27, 2009 10:00 This is a test
Jun 28, 2009 10:00 This is a test
Jun 29, 2009 10:00 This is a test
3. emacs -Q -l ~/test.el
4. `M-x diary' pops up a fancy diary buffer with this content (line
numbers added for subsequent reference):
1 Friday, June 26, 2009
2 =====================
3 10:00 This is a test
4
5 Saturday, June 27, 2009
6 =======================
7 10:00 This is a test
8
9 Sunday, June 28, 2009
10 =====================
11 10:00 This is a test
12
13 Monday, June 29, 2009
14 =====================
15 10:00 This is a test
16
5. Move the mouse pointer over the fancy diary buffer.
=> As expected, line 3, 7, 11, and 15 have mouse-face highlighting when
the mouse pointer moves over them. However, lines 4, 8, and 12 (but
not 16) also get mouse-face highlighting, and it remains when the
mouse pointer moves off of those lines.
I suspect this bug is due to this change:
2009-06-22 Chong Yidong <address@hidden>
* w32term.c (x_draw_glyph_string): Use the glyph string's width
rather than its background_width for drawing the overline and
underline (Bug#489).
* xterm.c (x_draw_glyph_string): Use the glyph string's width
rather than its background_width for drawing the overline and
underline (Bug#489).
(xg_default_icon_file): New variable.
(syms_of_xterm): Initialize it to the Emacs SVG icon file.
(x_bitmap_icon): Under GTK, use xg_default_icon_file.
* xdisp.c (Qbefore_string, Qafter_string): Add externs.
(load_overlay_strings): Remove externs.
(fast_find_position): Function deleted.
(mouse_face_from_buffer_pos): New function, based on
fast_find_position. Correctly handle before-strings,
display-strings, and after-strings (Bug#1220).
(note_mouse_highlight): Use mouse_face_from_buffer_pos.
since it does not happen with my previous build before this change, but
I don't have time right now to confirm this by reverting the change.
In GNU Emacs 23.1.50.1 (i686-pc-linux-gnu, GTK+ Version 2.14.4)
of 2009-06-23 on escher
Windowing system distributor `The X.Org Foundation', version 11.0.10502000
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: nil
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: en_US.UTF-8
value of $XMODIFIERS: @im=local
locale-coding-system: utf-8-unix
default-enable-multibyte-characters: t