diff options
Diffstat (limited to 'src/ui/text.c')
-rw-r--r-- | src/ui/text.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/ui/text.c b/src/ui/text.c index 51531057..83e87d0c 100644 --- a/src/ui/text.c +++ b/src/ui/text.c | |||
@@ -295,6 +295,7 @@ static void setupFontVariants_Text_(iText *d, const iFontSpec *spec, int baseId) | |||
295 | /* This is the highest priority override font. */ | 295 | /* This is the highest priority override font. */ |
296 | d->overrideFontId = baseId; | 296 | d->overrideFontId = baseId; |
297 | } | 297 | } |
298 | iAssert(activeText_ == d); | ||
298 | pushBack_Array(&d->fontPriorityOrder, &(iPrioMapItem){ spec->priority, baseId }); | 299 | pushBack_Array(&d->fontPriorityOrder, &(iPrioMapItem){ spec->priority, baseId }); |
299 | for (enum iFontStyle style = 0; style < max_FontStyle; style++) { | 300 | for (enum iFontStyle style = 0; style < max_FontStyle; style++) { |
300 | for (enum iFontSize sizeId = 0; sizeId < max_FontSize; sizeId++) { | 301 | for (enum iFontSize sizeId = 0; sizeId < max_FontSize; sizeId++) { |
@@ -499,10 +500,13 @@ static void resetCache_Text_(iText *d) { | |||
499 | } | 500 | } |
500 | 501 | ||
501 | void resetFonts_Text(iText *d) { | 502 | void resetFonts_Text(iText *d) { |
503 | iText *oldActive = activeText_; | ||
504 | setCurrent_Text(d); /* some routines rely on the global `activeText_` pointer */ | ||
502 | deinitFonts_Text_(d); | 505 | deinitFonts_Text_(d); |
503 | deinitCache_Text_(d); | 506 | deinitCache_Text_(d); |
504 | initCache_Text_(d); | 507 | initCache_Text_(d); |
505 | initFonts_Text_(d); | 508 | initFonts_Text_(d); |
509 | setCurrent_Text(oldActive); | ||
506 | } | 510 | } |
507 | 511 | ||
508 | static SDL_Palette *glyphPalette_(void) { | 512 | static SDL_Palette *glyphPalette_(void) { |
@@ -1476,14 +1480,14 @@ static void evenMonospaceAdvances_GlyphBuffer_(iGlyphBuffer *d, iFont *baseFont) | |||
1476 | } | 1480 | } |
1477 | 1481 | ||
1478 | static iRect run_Font_(iFont *d, const iRunArgs *args) { | 1482 | static iRect run_Font_(iFont *d, const iRunArgs *args) { |
1479 | const int mode = args->mode; | 1483 | const int mode = args->mode; |
1480 | const iInt2 orig = args->pos; | 1484 | const iInt2 orig = args->pos; |
1481 | iRect bounds = { orig, init_I2(0, d->height) }; | 1485 | iRect bounds = { orig, init_I2(0, d->height) }; |
1482 | float xCursor = 0.0f; | 1486 | float xCursor = 0.0f; |
1483 | float yCursor = 0.0f; | 1487 | float yCursor = 0.0f; |
1484 | float xCursorMax = 0.0f; | 1488 | float xCursorMax = 0.0f; |
1485 | const iBool isMonospaced = isMonospaced_Font(d); | 1489 | const iBool isMonospaced = isMonospaced_Font(d); |
1486 | iWrapText *wrap = args->wrap; | 1490 | iWrapText *wrap = args->wrap; |
1487 | iAssert(args->text.end >= args->text.start); | 1491 | iAssert(args->text.end >= args->text.start); |
1488 | /* Split the text into a number of attributed runs that specify exactly which | 1492 | /* Split the text into a number of attributed runs that specify exactly which |
1489 | font is used and other attributes such as color. (HarfBuzz shaping is done | 1493 | font is used and other attributes such as color. (HarfBuzz shaping is done |