summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2011-02-19 22:29:39 +0000
committerManolo Gouy <Manolo>2011-02-19 22:29:39 +0000
commit3ca2074427e2072cb50faa7b1b676fbb78ef58cb (patch)
tree678f4b2cd5fec0d2be88923e566ee3bf487c3268 /src
parent601e2a5e3dca07f5c760006106a41b3981000702 (diff)
Fl::set_fonts() under Mac OS adds now all available fonts sorted in alphabetical order.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8447 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src')
-rw-r--r--src/fl_set_fonts_mac.cxx14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/fl_set_fonts_mac.cxx b/src/fl_set_fonts_mac.cxx
index 515dd09e3..b6ca06c43 100644
--- a/src/fl_set_fonts_mac.cxx
+++ b/src/fl_set_fonts_mac.cxx
@@ -56,6 +56,13 @@ const char* Fl::get_font_name(Fl_Font fnum, int* ap) {
return f->fontname;
}
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+static int name_compare(const void *a, const void *b)
+{
+ return strcmp(*(char**)a, *(char**)b);
+}
+#endif
+
static int fl_free_font = FL_FREE_FONT;
Fl_Font Fl::set_fonts(const char* xstarname) {
@@ -76,6 +83,7 @@ if(fl_mac_os_version >= 0x1050) {
CFRelease(fcref);
CFIndex count = CFArrayGetCount(arrayref);
CFIndex i;
+ char **tabfontnames = new char*[count]; // never free'ed
for (i = 0; i < count; i++) {
CTFontDescriptorRef fdesc = (CTFontDescriptorRef)CFArrayGetValueAtIndex(arrayref, i);
CTFontRef font = CTFontCreateWithFontDescriptor(fdesc, 0., NULL);
@@ -83,10 +91,14 @@ if(fl_mac_os_version >= 0x1050) {
CFRelease(font);
static char fname[100];
CFStringGetCString(cfname, fname, sizeof(fname), kCFStringEncodingUTF8);
+ tabfontnames[i] = strdup(fname); // never free'ed
CFRelease(cfname);
- Fl::set_font((Fl_Font)(fl_free_font++), strdup(fname));
}
CFRelease(arrayref);
+ qsort(tabfontnames, count, sizeof(char*), name_compare);
+ for (i = 0; i < count; i++) {
+ Fl::set_font((Fl_Font)(fl_free_font++), tabfontnames[i]);
+ }
return (Fl_Font)fl_free_font;
}
else {