]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/font.cpp
*** empty log message ***
[wxWidgets.git] / src / gtk1 / font.cpp
index 6cd4c22b1cec62195d15b078ba99a8ce70b1c539..5e9d1ce629aec4527207a93e0d9f0d1444302985 100644 (file)
 #include "wx/log.h"
 #include "wx/gdicmn.h"
 #include "wx/tokenzr.h"
 #include "wx/log.h"
 #include "wx/gdicmn.h"
 #include "wx/tokenzr.h"
+#include "wx/settings.h"
 
 #include <strings.h>
 
 #include <gdk/gdk.h>
 
 #include <strings.h>
 
 #include <gdk/gdk.h>
+#include <gtk/gtk.h>
 
 // ----------------------------------------------------------------------------
 // wxFontRefData
 
 // ----------------------------------------------------------------------------
 // wxFontRefData
@@ -188,7 +190,7 @@ wxFont::wxFont( const wxString& fontname, const wxFontData& fontdata )
 
     tmp = tn.GetNextToken();                     // pointsize
     long num = wxStrtol (tmp.c_str(), (wxChar **) NULL, 10);
 
     tmp = tn.GetNextToken();                     // pointsize
     long num = wxStrtol (tmp.c_str(), (wxChar **) NULL, 10);
-    M_FONTDATA->m_pointSize = num / 10;
+    M_FONTDATA->m_pointSize = (int)(num / 10);
 
     tn.GetNextToken();                           // x-res
     tn.GetNextToken();                           // y-res
 
     tn.GetNextToken();                           // x-res
     tn.GetNextToken();                           // y-res
@@ -388,6 +390,29 @@ void wxFont::SetEncoding(wxFontEncoding encoding)
 // get internal representation of font
 // ----------------------------------------------------------------------------
 
 // get internal representation of font
 // ----------------------------------------------------------------------------
 
+static GdkFont *g_systemDefaultGuiFont = (GdkFont*) NULL;
+
+static 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())
 GdkFont *wxFont::GetInternalFont( float scale ) const
 {
     if (!Ok())
@@ -408,18 +433,11 @@ GdkFont *wxFont::GetInternalFont( float scale ) const
     }
     else
     {
     }
     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,
         {
             font = wxLoadQueryNearestFont( point_scale,
                                            M_FONTDATA->m_family,