- Timestamp:
- Dec 24, 2007, 10:14:09 AM (17 years ago)
- Branches:
- master, barnowl_perlaim, debian, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- 9866c3a
- Parents:
- 762512d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
fmtext.c
r28ee32b rdd24b6a 316 316 { 317 317 char *ptr_s, *ptr_e, *ptr_c, *last; 318 int col, cnt ;318 int col, cnt, padding; 319 319 320 320 last=in->textbuff+in->textlen-1; … … 335 335 col = 0; 336 336 cnt = 0; 337 padding = 0; 337 338 ptr_c = ptr_s; 338 339 while(col < bcol && ptr_c < ptr_e) { 339 340 gunichar c = g_utf8_get_char(ptr_c); 340 if (g_unichar_iswide(c)) { 341 if (col + 2 > bcol) break; 342 else col += 2; 343 } 344 else if (g_unichar_type(c) == G_UNICODE_NON_SPACING_MARK) ; /*do nothing*/ 345 /* We may need more special cases here... unicode spacing is hard. */ 346 else { 347 if (col + 1 > bcol) break; 348 else ++col; 349 } 341 if (col + wcwidth(c) > bcol) break; 342 col += wcwidth(c); 350 343 ptr_c = g_utf8_next_char(ptr_c); 351 if (col >= acol) ++cnt; 352 if (col <= acol) ptr_s = ptr_c; 353 } 354 _owl_fmtext_append_fmtext(out, in, ptr_s - in->textbuff, ptr_c - in->textbuff); 344 if (col >= acol) { 345 if (cnt == 0) { 346 ptr_s = ptr_c; 347 padding = col - acol; 348 } 349 ++cnt; 350 } 351 } 352 if (cnt) { 353 while(padding-- > 0) { 354 owl_fmtext_append_normal(out, " "); 355 } 356 _owl_fmtext_append_fmtext(out, in, ptr_s - in->textbuff, ptr_c - in->textbuff); 357 } 358 else { 359 owl_fmtext_append_normal(out, "\n"); 360 } 355 361 ptr_s=ptr_e+1; 356 362 357 363 #if 0 358 364 /* we need to check that we won't run over here */
Note: See TracChangeset
for help on using the changeset viewer.