]> code.delx.au - gnu-emacs/blobdiff - src/dispnew.c
Merged in changes from CVS HEAD
[gnu-emacs] / src / dispnew.c
index 81a0f1f5c8ebea267078df7a33671657f5ddde9f..b62fd8f8b8fa7878efd9e1632323b4992575a16a 100644 (file)
@@ -1,5 +1,5 @@
 /* Updating of data structures for redisplay.
-   Copyright (C) 1985,86,87,88,93,94,95,97,98,1999,2000,01,02,2003
+   Copyright (C) 1985,86,87,88,93,94,95,97,98,1999,2000,01,02,03,04
        Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
@@ -1500,12 +1500,11 @@ row_equal_p (w, a, b, mouse_face_p)
            return 0;
        }
 
-      if (a->truncated_on_left_p != b->truncated_on_left_p
-         || a->fill_line_p != b->fill_line_p
-         || a->truncated_on_right_p != b->truncated_on_right_p
-         || a->overlay_arrow_p != b->overlay_arrow_p
-         || a->continued_p != b->continued_p
-         || a->indicate_empty_line_p != b->indicate_empty_line_p
+      if (a->fill_line_p != b->fill_line_p
+         || a->cursor_in_fringe_p != b->cursor_in_fringe_p
+         || a->left_fringe_bitmap != b->left_fringe_bitmap
+         || a->right_fringe_bitmap != b->right_fringe_bitmap
+         || a->exact_window_width_line_p != b->exact_window_width_line_p
          || a->overlapped_p != b->overlapped_p
          || (MATRIX_ROW_CONTINUATION_LINE_P (a)
              != MATRIX_ROW_CONTINUATION_LINE_P (b))
@@ -3442,6 +3441,7 @@ direct_output_for_insert (g)
          /* Can't do it in a continued line because continuation
             lines would change.  */
          (glyph_row->continued_p
+          || glyph_row->exact_window_width_line_p
           /* Can't use this method if the line overlaps others or is
              overlapped by others because these other lines would
              have to be redisplayed.  */
@@ -3647,6 +3647,10 @@ direct_output_for_insert (g)
       cursor_to (y, x);
     }
 
+#ifdef HAVE_WINDOW_SYSTEM
+  update_window_fringes (w, 0);
+#endif
+
   if (FRAME_RIF (f))
     FRAME_RIF (f)->update_window_end_hook (w, 1, 0);
   update_end (f);
@@ -4194,6 +4198,10 @@ update_window (w, force_p)
       strcpy (w->current_matrix->method, w->desired_matrix->method);
 #endif
 
+#ifdef HAVE_WINDOW_SYSTEM
+      update_window_fringes (w, 0);
+#endif
+
       /* End the update of window W.  Don't set the cursor if we
          paused updating the display because in this case,
          set_window_cursor_after_update hasn't been called, and
@@ -4515,13 +4523,10 @@ update_window_line (w, vpos, mouse_face_overwritten_p)
       if (!current_row->enabled_p
          || desired_row->y != current_row->y
          || desired_row->visible_height != current_row->visible_height
-         || desired_row->overlay_arrow_p != current_row->overlay_arrow_p
-         || desired_row->truncated_on_left_p != current_row->truncated_on_left_p
-         || desired_row->truncated_on_right_p != current_row->truncated_on_right_p
-         || desired_row->continued_p != current_row->continued_p
+         || desired_row->cursor_in_fringe_p != current_row->cursor_in_fringe_p
+         || current_row->redraw_fringe_bitmaps_p
          || desired_row->mode_line_p != current_row->mode_line_p
-         || (desired_row->indicate_empty_line_p
-             != current_row->indicate_empty_line_p)
+         || desired_row->exact_window_width_line_p != current_row->exact_window_width_line_p
          || (MATRIX_ROW_CONTINUATION_LINE_P (desired_row)
              != MATRIX_ROW_CONTINUATION_LINE_P (current_row)))
        rif->after_update_window_line_hook (desired_row);
@@ -4776,6 +4781,7 @@ scrolling_window (w, header_line_p)
 
       if (c->enabled_p
          && d->enabled_p
+         && !d->redraw_fringe_bitmaps_p
          && c->y == d->y
          && MATRIX_ROW_BOTTOM_Y (c) <= yb
          && MATRIX_ROW_BOTTOM_Y (d) <= yb
@@ -4831,6 +4837,7 @@ scrolling_window (w, header_line_p)
          && MATRIX_ROW (current_matrix, i - 1)->enabled_p
         && (MATRIX_ROW (current_matrix, i - 1)->y
             == MATRIX_ROW (desired_matrix, j - 1)->y)
+        && !MATRIX_ROW (desired_matrix, j - 1)->redraw_fringe_bitmaps_p
          && row_equal_p (w,
                         MATRIX_ROW (desired_matrix, i - 1),
                          MATRIX_ROW (current_matrix, j - 1), 1))
@@ -5023,6 +5030,10 @@ scrolling_window (w, header_line_p)
            to = MATRIX_ROW (current_matrix, r->desired_vpos + j);
            from = MATRIX_ROW (desired_matrix, r->desired_vpos + j);
            to_overlapped_p = to->overlapped_p;
+           if (!from->mode_line_p && !w->pseudo_window_p
+               && (to->left_fringe_bitmap != from->left_fringe_bitmap
+                   || to->right_fringe_bitmap != from->right_fringe_bitmap))
+             from->redraw_fringe_bitmaps_p = 1;
            assign_row (to, from);
            to->enabled_p = 1, from->enabled_p = 0;
            to->overlapped_p = to_overlapped_p;