Subject: Re: bug#7464: 24.0.50; mouse highlighting vanishes upon unsplitting window

From: Eli Zaretskii <[email-masked]>
Date: Fri, 30 Mar 2012 09:35:45 +0300

> Date: 30 Mar 2012 00:56:02 +0200
> From: "Stephen Berman" <[email-masked]>
> Cc: [email-masked], [email-masked]
> 
> > 	    changed_p |= update_window_line (w, vpos,
> > 					     &mouse_face_overwritten_p);
> 
> I got this far, but...
> 
> > Does the mouse_face_overwritten_p flag return being set when the line
> > with highlight is updated?
> 
> ...I don't understand what I should do to answer this question.  Here's
> what I tried (the Emacs window was still displaying mouse highlighting):
> 
> (gdb) 
> 3655                changed_p |= update_window_line (w, vpos,
> (gdb) s
> update_window_line (w=0x88a9290, vpos=2, mouse_face_overwritten_p=0xbfffd17c)
>     at /data/steve/bzr/emacs/quickfixes/src/dispnew.c:4009
> 4009      struct glyph_row *current_row = MATRIX_ROW (w->current_matrix, vpos);
> (gdb) n
> 4010      struct glyph_row *desired_row = MATRIX_ROW (w->desired_matrix, vpos);
> (gdb) p w->current_matrix
> $8 = (struct glyph_matrix *) 0x89f2e58
> (gdb) p w->current_matrix->rows
> $9 = (struct glyph_row *) 0x8aa18a0
> (gdb) p (w->current_matrix->rows+1)->mouse_face_p
> $10 = 0
> (gdb) p mouse_face_overwritten_p
> $11 = (int *) 0xbfffd17c
> 
> I guess this isn't the answer you're looking for.  If you can continue
> to indulge me with precise gdb instructions, I'll be happy to try again.

When update_window_line updates the screen line that has some
characters highlighted, it should set mouse_face_overwritten_p to a
non-zero value.  So either step over the call to update_window_line
(i.e. 'n' instead of 's'), or, if you stepped into it, type "finish",
and then look at the value of mouse_face_overwritten_p after the call.
But please do it for the row with highlight; e.g., if it's the 2nd
screen line, do it when the value of vpos is 1.