raster wrote this patch to provide the "fixed" font if the etheme's default font is not available. For an example scenario, start e with
brushedmetal-tigert and a font server that does not have the Lucida
font. e starts with no titlebar/menu/dialogbox/whatver fonts. The
"fixed" font or whateveryoucallthenonfixed font (scaled?) is probably always there.
------------------------------------------------------------------------
--- enlightenment-0.16.6-upstream/src/text.c 2003-11-05 12:58:51.000000000 -0500
+++ enlightenment-0.16.6-debian/src/text.c 2003-11-06 05:06:03.000000000 -0500
@@ -203,6 +203,13 @@
/* EDBUG_RETURN_; */
}
if (!ts->xfontset)
+ {
+ ts->xfontset =
+ XCreateFontSet(disp, "fixed", &missing_list, &missing_cnt,
+ &def_str);
+ if (missing_cnt)
+ XFreeStringList(missing_list);
+ }
EDBUG_RETURN_;
ts->xfontset_ascent = 0;
@@ -210,6 +217,8 @@
for (i = 0; i < font_cnt; i++)
ts->xfontset_ascent = MAX(fs[i]->ascent, ts->xfontset_ascent);
}
+ if (!ts->xfont)
+ ts->xfont = XLoadQueryFont(disp, "fixed");
}
EDBUG_RETURN_;
}
Something is not right. This patch leaves some lines of code after EDBUG_RETURN_ unreachable.
How about doing as in the attached one?
/Kim
--- src/text.c 5 Nov 2003 17:24:46 -0000 1.23
+++ src/text.c 12 Nov 2003 19:50:52 -0000
@@ -202,14 +202,27 @@
XFreeStringList(missing_list);
/* EDBUG_RETURN_; */
}
+
if (!ts->xfontset)
- EDBUG_RETURN_;
+ {
+ ts->xfontset =
+ XCreateFontSet(disp, "fixed", &missing_list, &missing_cnt,
+ &def_str);
+ if (missing_cnt)
+ XFreeStringList(missing_list);
+ }
- ts->xfontset_ascent = 0;
- font_cnt = XFontsOfFontSet(ts->xfontset, &fs, &fn);
- for (i = 0; i < font_cnt; i++)
- ts->xfontset_ascent = MAX(fs[i]->ascent, ts->xfontset_ascent);
+ if (ts->xfontset)
+ {
+ ts->xfontset_ascent = 0;
+ font_cnt = XFontsOfFontSet(ts->xfontset, &fs, &fn);
+ for (i = 0; i < font_cnt; i++)
+ ts->xfontset_ascent =
+ MAX(fs[i]->ascent, ts->xfontset_ascent);
+ }
}
+ if (!ts->xfont)
+ ts->xfont = XLoadQueryFont(disp, "fixed");
}
EDBUG_RETURN_;
}
