emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r107713: Fix bug #7464 with mouse hig


From: Eli Zaretskii
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r107713: Fix bug #7464 with mouse highlight after "C-x 1".
Date: Sat, 31 Mar 2012 21:10:34 +0300
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 107713
fixes bug(s): http://debbugs.gnu.org/7464
committer: Eli Zaretskii <address@hidden>
branch nick: trunk
timestamp: Sat 2012-03-31 21:10:34 +0300
message:
  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.
modified:
  src/ChangeLog
  src/window.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2012-03-31 17:08:38 +0000
+++ b/src/ChangeLog     2012-03-31 18:10:34 +0000
@@ -1,5 +1,9 @@
 2012-03-31  Eli Zaretskii  <address@hidden>
 
+       * 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

=== modified file 'src/window.c'
--- a/src/window.c      2012-03-12 06:34:32 +0000
+++ b/src/window.c      2012-03-31 18:10:34 +0000
@@ -2565,6 +2565,7 @@
   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 @@
     }
 
   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++;


reply via email to

[Prev in Thread] Current Thread [Next in Thread]