diff options
author | Eli Zaretskii <eliz@gnu.org> | 2012-03-31 21:10:34 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2012-03-31 21:10:34 +0300 |
commit | a6b1c7ccc3a017f44e6671b13281ce7f3e32e2af (patch) | |
tree | a036358b000578788d259598df329ae61112cf80 /src | |
parent | 697ba24bbf1bafb9677038037aeefdd97bc33b71 (diff) |
Fix bug #7464 with mouse highlight after "C-x 1".
src/window.c (Fdelete_other_windows_internal): Invalidate the row
and column information about mouse highlight, so that redisplay
restores it after reallocating the glyph matrices.
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 4 | ||||
-rw-r--r-- | src/window.c | 15 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 68f311d864..33c93a30b0 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,9 @@ 2012-03-31 Eli Zaretskii <eliz@gnu.org> + * window.c (Fdelete_other_windows_internal): Invalidate the row + and column information about mouse highlight, so that redisplay + restores it after reallocating the glyph matrices. (Bug#7464) + * xdisp.c (set_cursor_from_row): If `cursor' property on a display string comes from a `display' text property, use the buffer position of that property as if we actually saw that position in diff --git a/src/window.c b/src/window.c index bcbf0ad2bd..af7968f9ed 100644 --- a/src/window.c +++ b/src/window.c @@ -2565,6 +2565,7 @@ window-start value is reasonable when this function is called. */) Lisp_Object sibling, pwindow, swindow IF_LINT (= Qnil), delta; EMACS_INT startpos IF_LINT (= 0); int top IF_LINT (= 0), new_top, resize_failed; + Mouse_HLInfo *hlinfo; w = decode_any_window (window); XSETWINDOW (window, w); @@ -2645,6 +2646,20 @@ window-start value is reasonable when this function is called. */) } BLOCK_INPUT; + hlinfo = MOUSE_HL_INFO (f); + /* We are going to free the glyph matrices of WINDOW, and with that + we might lose any information about glyph rows that have some of + their glyphs highlighted in mouse face. (These rows are marked + with a non-zero mouse_face_p flag.) If WINDOW indeed has some + glyphs highlighted in mouse face, signal to frame's up-to-date + hook that mouse highlight was overwritten, so that it will + arrange for redisplaying the highlight. */ + if (EQ (hlinfo->mouse_face_window, window)) + { + hlinfo->mouse_face_beg_row = hlinfo->mouse_face_beg_col = -1; + hlinfo->mouse_face_end_row = hlinfo->mouse_face_end_col = -1; + hlinfo->mouse_face_window = Qnil; + } free_window_matrices (r); windows_or_buffers_changed++; |