X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7beba2fc73283f5b750227459da57e66bcd475f5..28be2e8a170979d476a5ea4f585505b8a2f5af27:/src/gtk1/font.cpp diff --git a/src/gtk1/font.cpp b/src/gtk1/font.cpp index c2e51daba6..83010c18da 100644 --- a/src/gtk1/font.cpp +++ b/src/gtk1/font.cpp @@ -26,10 +26,13 @@ #include "wx/log.h" #include "wx/gdicmn.h" #include "wx/tokenzr.h" +#include "wx/settings.h" #include -#include "gdk/gdk.h" +#include +#include +#include // ---------------------------------------------------------------------------- // wxFontRefData @@ -68,7 +71,7 @@ private: wxString m_faceName; wxFontEncoding m_encoding; - friend wxFont; + friend class wxFont; }; // ============================================================================ @@ -164,6 +167,7 @@ wxFont::wxFont( const wxString& fontname, const wxFontData& fontdata ) wxStringTokenizer tn( fontname, wxT("-") ); + tn.GetNextToken(); // skip initial empty token tn.GetNextToken(); // foundry M_FONTDATA->m_faceName = tn.GetNextToken(); // family @@ -187,8 +191,11 @@ wxFont::wxFont( const wxString& fontname, const wxFontData& fontdata ) tn.GetNextToken(); // pixel size tmp = tn.GetNextToken(); // pointsize - long num = wxStrtol (tmp.c_str(), (wxChar **) NULL, 10); - M_FONTDATA->m_pointSize = num / 10; + if (tmp != wxT("*")) + { + long num = wxStrtol (tmp.c_str(), (wxChar **) NULL, 10); + M_FONTDATA->m_pointSize = (int)(num / 10); + } tn.GetNextToken(); // x-res tn.GetNextToken(); // y-res @@ -388,6 +395,29 @@ void wxFont::SetEncoding(wxFontEncoding encoding) // get internal representation of font // ---------------------------------------------------------------------------- +static GdkFont *g_systemDefaultGuiFont = (GdkFont*) NULL; + +GdkFont *GtkGetDefaultGuiFont() +{ + if (!g_systemDefaultGuiFont) + { + GtkWidget *widget = gtk_button_new(); + GtkStyle *def = gtk_rc_get_style( widget ); + if (def) + { + g_systemDefaultGuiFont = gdk_font_ref( def->font ); + } + else + { + def = gtk_widget_get_default_style(); + if (def) + g_systemDefaultGuiFont = gdk_font_ref( def->font ); + } + gtk_widget_destroy( widget ); + } + return g_systemDefaultGuiFont; +} + GdkFont *wxFont::GetInternalFont( float scale ) const { if (!Ok()) @@ -408,18 +438,11 @@ GdkFont *wxFont::GetInternalFont( float scale ) const } else { -#if 0 - if ((int_scale == 100) && - (M_FONTDATA->m_family == wxSWISS) && - (M_FONTDATA->m_style == wxNORMAL) && - (M_FONTDATA->m_pointSize == 12) && - (M_FONTDATA->m_weight == wxNORMAL) && - (M_FONTDATA->m_underlined == FALSE)) + if (*this == wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT)) { - font = gdk_font_load( "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*" ); + font = GtkGetDefaultGuiFont(); } - else -#endif // 0 + if (!font) { font = wxLoadQueryNearestFont( point_scale, M_FONTDATA->m_family,