diff options
| author | Manolo Gouy <Manolo> | 2011-02-19 22:29:39 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2011-02-19 22:29:39 +0000 |
| commit | 3ca2074427e2072cb50faa7b1b676fbb78ef58cb (patch) | |
| tree | 678f4b2cd5fec0d2be88923e566ee3bf487c3268 /src | |
| parent | 601e2a5e3dca07f5c760006106a41b3981000702 (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.cxx | 14 |
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 { |
