when drawing and measuring strings in "flow" mode, don't ellipsize so that lines can wrap

This commit is contained in:
Dana Jansens 2008-02-07 01:34:34 -05:00
parent b3c5fab3fa
commit fcc23e1fd1

View file

@ -148,11 +148,13 @@ static void font_measure_full(const RrFont *f, const gchar *str,
if (flow) { if (flow) {
pango_layout_set_single_paragraph_mode(f->layout, FALSE); pango_layout_set_single_paragraph_mode(f->layout, FALSE);
pango_layout_set_width(f->layout, maxwidth * PANGO_SCALE); pango_layout_set_width(f->layout, maxwidth * PANGO_SCALE);
pango_layout_set_ellipsize(f->layout, PANGO_ELLIPSIZE_NONE);
} }
else { else {
/* single line mode */ /* single line mode */
pango_layout_set_single_paragraph_mode(f->layout, TRUE); pango_layout_set_single_paragraph_mode(f->layout, TRUE);
pango_layout_set_width(f->layout, -1); pango_layout_set_width(f->layout, -1);
pango_layout_set_ellipsize(f->layout, PANGO_ELLIPSIZE_MIDDLE);
} }
/* pango_layout_get_pixel_extents lies! this is the right way to get the /* pango_layout_get_pixel_extents lies! this is the right way to get the
@ -240,6 +242,9 @@ void RrFontDraw(XftDraw *d, RrTextureText *t, RrRect *area)
w -= 4; w -= 4;
h = area->height; h = area->height;
if (t->flow)
ell = PANGO_ELLIPSIZE_NONE;
else {
switch (t->ellipsize) { switch (t->ellipsize) {
case RR_ELLIPSIZE_NONE: case RR_ELLIPSIZE_NONE:
ell = PANGO_ELLIPSIZE_NONE; ell = PANGO_ELLIPSIZE_NONE;
@ -254,6 +259,7 @@ void RrFontDraw(XftDraw *d, RrTextureText *t, RrRect *area)
ell = PANGO_ELLIPSIZE_END; ell = PANGO_ELLIPSIZE_END;
break; break;
} }
}
pango_layout_set_text(t->font->layout, t->string, -1); pango_layout_set_text(t->font->layout, t->string, -1);
pango_layout_set_width(t->font->layout, w * PANGO_SCALE); pango_layout_set_width(t->font->layout, w * PANGO_SCALE);