X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1acca470dfb55b82553af6cdb0c88b3b3a1eb00b..44c2703fbf07a5685d1959f3f72d3ccf91a7f5db:/src/unix/fontenum.cpp?ds=sidebyside diff --git a/src/unix/fontenum.cpp b/src/unix/fontenum.cpp index 25ab081632..90a63d4a7c 100644 --- a/src/unix/fontenum.cpp +++ b/src/unix/fontenum.cpp @@ -20,6 +20,8 @@ // for compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" +#if wxUSE_FONTENUM + #include "wx/fontenum.h" #ifndef WX_PRECOMP @@ -47,7 +49,9 @@ extern GtkWidget *wxGetRootWindow(); #endif // __WXGTK20__ -extern "C" int wxCMPFUNC_CONV +extern "C" +{ +static int wxCMPFUNC_CONV wxCompareFamilies (const void *a, const void *b) { const char *a_name = pango_font_family_get_name (*(PangoFontFamily **)a); @@ -55,6 +59,7 @@ wxCompareFamilies (const void *a, const void *b) return g_utf8_collate (a_name, b_name); } +} bool wxFontEnumerator::EnumerateFacenames(wxFontEncoding encoding, bool fixedWidthOnly) @@ -66,77 +71,36 @@ bool wxFontEnumerator::EnumerateFacenames(wxFontEncoding encoding, return false; } -#if defined(__WXGTK20__) || !defined(HAVE_PANGO_FONT_FAMILY_IS_MONOSPACE) - if ( fixedWidthOnly -#if defined(__WXGTK24__) - && (gtk_check_version(2,4,0) != NULL) -#endif - ) - { - OnFacename( wxT("monospace") ); - } - else // !fixedWidthOnly -#endif // __WXGTK20__ || !HAVE_PANGO_FONT_FAMILY_IS_MONOSPACE - { - PangoFontFamily **families = NULL; - gint n_families = 0; - pango_context_list_families ( + PangoFontFamily **families = NULL; + gint n_families = 0; + pango_context_list_families ( #ifdef __WXGTK20__ - gtk_widget_get_pango_context( wxGetRootWindow() ), + gtk_widget_get_pango_context( wxGetRootWindow() ), #else - wxTheApp->GetPangoContext(), + wxTheApp->GetPangoContext(), #endif - &families, &n_families ); - qsort (families, n_families, sizeof (PangoFontFamily *), wxCompareFamilies); + &families, &n_families ); + qsort (families, n_families, sizeof (PangoFontFamily *), wxCompareFamilies); - for (int i=0; i<n_families; i++) - { -#if defined(__WXGTK24__) || defined(HAVE_PANGO_FONT_FAMILY_IS_MONOSPACE) - if (!fixedWidthOnly || ( -#ifdef __WXGTK24__ - !gtk_check_version(2,4,0) && -#endif - pango_font_family_is_monospace(families[i]) - ) ) + for ( int i = 0; i < n_families; i++ ) + { +#if defined(__WXGTK20__) || defined(HAVE_PANGO_FONT_FAMILY_IS_MONOSPACE) + if ( !fixedWidthOnly || + pango_font_family_is_monospace(families[i]) ) #endif - { - const gchar *name = pango_font_family_get_name(families[i]); - OnFacename(wxString(name, wxConvUTF8)); - } + { + const gchar *name = pango_font_family_get_name(families[i]); + OnFacename(wxString(name, wxConvUTF8)); } - g_free(families); } + g_free(families); return true; } bool wxFontEnumerator::EnumerateEncodings(const wxString& facename) { - // name of UTF-8 encoding: no need to use wxFontMapper for it as it's - // unlikely to change - const wxString utf8(_T("UTF-8")); - - - // all fonts are in UTF-8 only when using Pango - if ( !facename.empty() ) - { - OnFontEncoding(facename, utf8); - return true; - } - - // so enumerating all facenames supporting this encoding is the same as - // enumerating all facenames - const wxArrayString facenames(GetFacenames(wxFONTENCODING_UTF8)); - const size_t count = facenames.size(); - if ( !count ) - return false; - - for ( size_t n = 0; n < count; n++ ) - { - OnFontEncoding(facenames[n], utf8); - } - - return true; + return EnumerateEncodingsUTF8(facename); } @@ -384,3 +348,5 @@ bool wxFontEnumerator::EnumerateEncodings(const wxString& family) } #endif // !wxUSE_PANGO + +#endif // wxUSE_FONTENUM