- text[--l] = '\0';
- m = font_measure_string(t->font, text, t->shadow, t->offset);
+ shortened = TRUE;
+ /* remove a character from the middle */
+ text = g_string_erase(text, l-- / 2, 1);
+ em = ELIPSES_LENGTH(t->font, t->shadow, t->offset);
+ /* if the elipses are too large, don't show them at all */
+ if (em > position->width)
+ shortened = FALSE;
+ m = font_measure_string(t->font, text->str, t->shadow, t->offset) + em;
+ }
+ if (shortened) {
+ text = g_string_insert(text, (l + 1) / 2, ELIPSES);
+ l += 3;