summaryrefslogtreecommitdiff
path: root/src/ui/text.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/text.c')
-rw-r--r--src/ui/text.c20
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
501void resetFonts_Text(iText *d) { 502void 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
508static SDL_Palette *glyphPalette_(void) { 512static SDL_Palette *glyphPalette_(void) {
@@ -1476,14 +1480,14 @@ static void evenMonospaceAdvances_GlyphBuffer_(iGlyphBuffer *d, iFont *baseFont)
1476} 1480}
1477 1481
1478static iRect run_Font_(iFont *d, const iRunArgs *args) { 1482static 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