From: Eli Zaretskii Date: Sun, 17 Aug 2014 14:58:04 +0000 (+0300) Subject: Avoid overwriting the reversed_p flags in the glyph matrices. X-Git-Tag: emacs-25.0.90~2635^2~679^2~460 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=39125b22488ab597dd137a174700fcaab616d597;p=emacs.git Avoid overwriting the reversed_p flags in the glyph matrices. Avoid overwriting the reversed_p flags in the glyph matrices when init_iterator or start_display are called. src/xdisp.c (init_iterator): Don't initialize the reversed_p flag of the glyph row here. (tool_bar_height, redisplay_tool_bar, try_window) (try_window_reusing_current_matrix, try_window_id) (get_overlay_arrow_glyph_row, display_menu_bar): Initialize the reversed_p flag of the iterator's glyph row where the glyph row is going to be redrawn. --- diff --git a/src/ChangeLog b/src/ChangeLog index 3c10f66aaac..3d04357af59 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,15 @@ +2014-08-17 Eli Zaretskii + + Avoid overwriting the reversed_p flags in the glyph matrices when + init_iterator or start_display are called. + * xdisp.c (init_iterator): Don't initialize the reversed_p flag of + the glyph row here. + (tool_bar_height, redisplay_tool_bar, try_window) + (try_window_reusing_current_matrix, try_window_id) + (get_overlay_arrow_glyph_row, display_menu_bar): Initialize the + reversed_p flag of the iterator's glyph row where the glyph row + is going to be redrawn. + 2014-08-16 Paul Eggert * xdisp.c (set_horizontal_scroll_bar): Don't use uninitialized local. diff --git a/src/xdisp.c b/src/xdisp.c index 7553881b1f6..e7c3e922cb9 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -2971,10 +2971,6 @@ init_iterator (struct it *it, struct window *w, it->glyph_row = row; it->area = TEXT_AREA; - /* Forget any previous info about this row being reversed. */ - if (it->glyph_row) - it->glyph_row->reversed_p = 0; - /* Get the dimensions of the display area. The display area consists of the visible window area plus a horizontally scrolled part to the left of the window. All x-values are relative to the @@ -12294,6 +12290,7 @@ tool_bar_height (struct frame *f, int *n_rows, bool pixelwise) /* Initialize an iterator for iteration over F->desired_tool_bar_string in the tool-bar window of frame F. */ init_iterator (&it, w, -1, -1, temp_row, TOOL_BAR_FACE_ID); + temp_row->reversed_p = false; it.first_visible_x = 0; it.last_visible_x = WINDOW_PIXEL_WIDTH (w); reseat_to_string (&it, NULL, f->desired_tool_bar_string, 0, 0, 0, -1); @@ -12378,6 +12375,7 @@ redisplay_tool_bar (struct frame *f) it.first_visible_x = 0; it.last_visible_x = WINDOW_PIXEL_WIDTH (w); row = it.glyph_row; + row->reversed_p = false; /* Build a string that represents the contents of the tool-bar. */ build_desired_tool_bar_string (f); @@ -16898,6 +16896,7 @@ try_window (Lisp_Object window, struct text_pos pos, int flags) /* Initialize iterator and info to start at POS. */ start_display (&it, w, pos); + it.glyph_row->reversed_p = false; /* Display all lines of W. */ while (it.current_y < it.last_visible_y) @@ -17081,6 +17080,7 @@ try_window_reusing_current_matrix (struct window *w) && it.current.dpvec_index < 0) break; + it.glyph_row->reversed_p = false; if (display_line (&it)) last_text_row = it.glyph_row - 1; @@ -18101,6 +18101,11 @@ try_window_id (struct window *w) w->cursor.vpos = -1; last_text_row = NULL; overlay_arrow_seen = 0; + if (it.current_y < it.last_visible_y + && !f->fonts_changed + && (first_unchanged_at_end_row == NULL + || IT_CHARPOS (it) < stop_pos)) + it.glyph_row->reversed_p = false; while (it.current_y < it.last_visible_y && !f->fonts_changed && (first_unchanged_at_end_row == NULL @@ -18810,6 +18815,7 @@ get_overlay_arrow_glyph_row (struct window *w, Lisp_Object overlay_arrow_string) set_buffer_temp (buffer); init_iterator (&it, w, -1, -1, &scratch_glyph_row, DEFAULT_FACE_ID); + scratch_glyph_row.reversed_p = false; it.glyph_row->used[TEXT_AREA] = 0; SET_TEXT_POS (it.position, 0, 0); @@ -21400,6 +21406,7 @@ display_menu_bar (struct window *w) clear_glyph_row (row); row->enabled_p = true; row->full_width_p = 1; + row->reversed_p = false; } /* Display all items of the menu bar. */