[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/xdisp.c
From: |
Kim F. Storm |
Subject: |
[Emacs-diffs] Changes to emacs/src/xdisp.c |
Date: |
Wed, 17 May 2006 22:24:13 +0000 |
Index: emacs/src/xdisp.c
diff -u emacs/src/xdisp.c:1.1097 emacs/src/xdisp.c:1.1098
--- emacs/src/xdisp.c:1.1097 Thu May 11 21:26:54 2006
+++ emacs/src/xdisp.c Wed May 17 22:24:13 2006
@@ -9492,6 +9492,7 @@
while (it->current_x < max_x)
{
int x_before, x, n_glyphs_before, i, nglyphs;
+ struct it it_before;
/* Get the next display element. */
if (!get_next_display_element (it))
@@ -9505,9 +9506,10 @@
/* Produce glyphs. */
x_before = it->current_x;
n_glyphs_before = it->glyph_row->used[TEXT_AREA];
+ it_before = *it;
PRODUCE_GLYPHS (it);
- nglyphs = it->glyph_row->used[TEXT_AREA] - n_glyphs_before;
+ nglyphs = row->used[TEXT_AREA] - n_glyphs_before;
i = 0;
x = x_before;
while (i < nglyphs)
@@ -9516,9 +9518,9 @@
if (x + glyph->pixel_width > max_x)
{
- /* Glyph doesn't fit on line. */
- it->glyph_row->used[TEXT_AREA] = n_glyphs_before + i;
- it->current_x = x;
+ /* Glyph doesn't fit on line. Backtrack. */
+ row->used[TEXT_AREA] = n_glyphs_before;
+ *it = it_before;
goto out;
}
@@ -9549,6 +9551,8 @@
/* Make line the desired height and center it vertically. */
if ((height -= it->max_ascent + it->max_descent) > 0)
{
+ /* Don't add more than one line height. */
+ height %= FRAME_LINE_HEIGHT (it->f);
it->max_ascent += height / 2;
it->max_descent += (height + 1) / 2;
}