]> git.saurik.com Git - wxWidgets.git/blobdiff - src/x11/font.cpp
call Create from wxGrid non-default ctor instead to ensure both methods of creation...
[wxWidgets.git] / src / x11 / font.cpp
index 5b37c975e8b7fb441b443ac67fa27a7e54fc63d2..0855e067a390b2e7a01f825f14d608d7372b5f74 100644 (file)
@@ -93,7 +93,7 @@ wxXFont::~wxXFont()
 // wxFontRefData
 // ----------------------------------------------------------------------------
 
-class wxFontRefData: public wxObjectRefData
+class wxFontRefData: public wxGDIRefData
 {
 friend class wxFont;
 
@@ -187,12 +187,6 @@ void wxFontRefData::Init(int pointSize,
     m_style = style == wxDEFAULT ? wxFONTSTYLE_NORMAL : style;
     m_weight = weight == wxDEFAULT ? wxFONTWEIGHT_NORMAL : weight;
 
-    // and here, do we really want to forbid creation of the font of the size
-    // 90 (the value of wxDEFAULT)??
-    m_pointSize = pointSize == wxDEFAULT || pointSize == -1
-                    ? wxDEFAULT_FONT_SIZE
-                    : pointSize;
-
     m_underlined = underlined;
     m_encoding = encoding;
 
@@ -229,10 +223,11 @@ void wxFontRefData::Init(int pointSize,
     }
 
     m_nativeFontInfo.SetFaceName(m_faceName);
-    m_nativeFontInfo.SetPointSize(m_pointSize);
     m_nativeFontInfo.SetWeight((wxFontWeight)m_weight);
     m_nativeFontInfo.SetStyle((wxFontStyle)m_style);
 #endif // wxUSE_UNICODE
+
+    SetPointSize(pointSize);
 }
 
 void wxFontRefData::InitFromNative()
@@ -330,8 +325,8 @@ void wxFontRefData::InitFromNative()
         }
     }
 
-    switch ( wxToupper(*m_nativeFontInfo.
-                            GetXFontComponent(wxXLFD_SLANT).c_str()) )
+    switch ( wxToupper( m_nativeFontInfo.
+                       GetXFontComponent(wxXLFD_SLANT)[0u]).GetValue() )
     {
         case _T('I'):   // italique
             m_style = wxFONTSTYLE_ITALIC;
@@ -407,7 +402,7 @@ void wxFontRefData::InitFromNative()
 }
 
 wxFontRefData::wxFontRefData( const wxFontRefData& data )
-             : wxObjectRefData()
+             : wxGDIRefData()
 {
     m_pointSize = data.m_pointSize;
     m_family = data.m_family;
@@ -470,13 +465,12 @@ wxFontRefData::~wxFontRefData()
 
 void wxFontRefData::SetPointSize(int pointSize)
 {
-    m_pointSize = pointSize;
+    // NB: Pango doesn't support point sizes less than 1
+    m_pointSize = pointSize == wxDEFAULT || pointSize < 1 ? wxDEFAULT_FONT_SIZE
+                                                          : pointSize;
 
 #if wxUSE_UNICODE
-    // Get native info
-    PangoFontDescription *desc = m_nativeFontInfo.description;
-
-    pango_font_description_set_size( desc, m_pointSize * PANGO_SCALE );
+    m_nativeFontInfo.SetPointSize(m_pointSize);
 #endif
 }
 
@@ -692,6 +686,16 @@ wxFont::~wxFont()
 {
 }
 
+wxGDIRefData *wxFont::CreateGDIRefData() const
+{
+    return new wxFontRefData;
+}
+
+wxGDIRefData *wxFont::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxFontRefData(*wx_static_cast(const wxFontRefData *, data));
+}
+
 // ----------------------------------------------------------------------------
 // change the font attributes
 // ----------------------------------------------------------------------------