Backport fix for Bug#11677 from trunk
This commit is contained in:
parent
c17d5a38db
commit
170aedb97e
2 changed files with 29 additions and 17 deletions
|
@ -1,3 +1,9 @@
|
|||
2012-08-13 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* window.c (Fdelete_other_windows_internal)
|
||||
(Fdelete_window_internal): Don't access frame's mouse highlight
|
||||
info of the initial frame. (Bug#11677)
|
||||
|
||||
2012-08-12 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* nsterm.m (ns_read_socket): Return early if there is a modal
|
||||
|
|
40
src/window.c
40
src/window.c
|
@ -2565,7 +2565,6 @@ 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);
|
||||
CHECK_LIVE_FRAME (w->frame);
|
||||
|
@ -2648,19 +2647,23 @@ 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))
|
||||
if (!FRAME_INITIAL_P (f))
|
||||
{
|
||||
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;
|
||||
Mouse_HLInfo *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);
|
||||
|
||||
|
@ -3903,7 +3906,6 @@ Signal an error when WINDOW is the only window on its frame. */)
|
|||
&& EQ (r->new_total, (horflag ? r->total_cols : r->total_lines)))
|
||||
/* We can delete WINDOW now. */
|
||||
{
|
||||
Mouse_HLInfo *hlinfo;
|
||||
|
||||
/* Block input. */
|
||||
BLOCK_INPUT;
|
||||
|
@ -3911,9 +3913,13 @@ Signal an error when WINDOW is the only window on its frame. */)
|
|||
|
||||
/* If this window is referred to by the dpyinfo's mouse
|
||||
highlight, invalidate that slot to be safe (Bug#9904). */
|
||||
hlinfo = MOUSE_HL_INFO (XFRAME (w->frame));
|
||||
if (EQ (hlinfo->mouse_face_window, window))
|
||||
hlinfo->mouse_face_window = Qnil;
|
||||
if (!FRAME_INITIAL_P (f))
|
||||
{
|
||||
Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (f);
|
||||
|
||||
if (EQ (hlinfo->mouse_face_window, window))
|
||||
hlinfo->mouse_face_window = Qnil;
|
||||
}
|
||||
|
||||
windows_or_buffers_changed++;
|
||||
Vwindow_list = Qnil;
|
||||
|
|
Loading…
Add table
Reference in a new issue