Fix Fwindow_end's handling of cached position (Bug#12600).
authorMartin Rudalics <rudalics@gmx.at>
Mon, 15 Oct 2012 09:03:56 +0000 (11:03 +0200)
committerMartin Rudalics <rudalics@gmx.at>
Mon, 15 Oct 2012 09:03:56 +0000 (11:03 +0200)
* window.c (Fwindow_end): Rewrite check whether cached position
can be used (Bug#12600).
(resize_frame_windows, grow_mini_window, shrink_mini_window):
Set windows_or_buffers_changed.

src/ChangeLog
src/window.c

index e142cad..6acc22a 100644 (file)
@@ -1,3 +1,10 @@
+2012-10-15  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.c (Fwindow_end): Rewrite check whether cached position
+       can be used (Bug#12600).
+       (resize_frame_windows, grow_mini_window, shrink_mini_window):
+       Set windows_or_buffers_changed.
+
 2012-10-15  Daniel Colascione  <dancol@dancol.org>
 
        * dbusbind.c: Fix cygw32 build break when compiling with dbus
index 61d2a8b..b4fee61 100644 (file)
@@ -1464,9 +1464,7 @@ if it isn't already recorded.  */)
 #endif
 
   if (! NILP (update)
-      && ! (! NILP (w->window_end_valid)
-           && w->last_modified >= BUF_MODIFF (b)
-           && w->last_overlay_modified >= BUF_OVERLAY_MODIFF (b))
+      && (windows_or_buffers_changed || NILP (w->window_end_valid))
       && !noninteractive)
     {
       struct text_pos startp;
@@ -3795,6 +3793,8 @@ resize_frame_windows (struct frame *f, int size, int horflag)
            (m, make_number (XINT (r->top_line) + XINT (r->total_lines)));
        }
     }
+
+  windows_or_buffers_changed++;
 }
 
 
@@ -4208,6 +4208,7 @@ grow_mini_window (struct window *w, int delta)
       w->last_modified = 0;
       w->last_overlay_modified = 0;
 
+      windows_or_buffers_changed++;
       adjust_glyphs (f);
       unblock_input ();
     }
@@ -4245,6 +4246,7 @@ shrink_mini_window (struct window *w)
          w->last_modified = 0;
          w->last_overlay_modified = 0;
 
+         windows_or_buffers_changed++;
          adjust_glyphs (f);
          unblock_input ();
        }