]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/font.cpp
Fix for non-CG mode
[wxWidgets.git] / src / mac / carbon / font.cpp
index bd90c3bdf1ea5a0db12059eb8e0889bb326785de..0fcdd8ad72ffca1844a475b9d2d6381ad763957d 100644 (file)
@@ -254,6 +254,7 @@ void wxFontRefData::MacFindFont()
                         break ;
 
                     case wxMODERN :
+                    case wxTELETYPE:
                         m_faceName =  wxT("Monaco");
                         break ;
 
@@ -444,26 +445,31 @@ bool wxFont::RealizeResource()
 
 void wxFont::SetEncoding(wxFontEncoding encoding)
 {
-    AllocExclusive();
+    Unshare();
 
     M_FONTDATA->m_encoding = encoding;
 
     RealizeResource();
 }
 
-wxObjectRefData* wxFont::CreateRefData() const
+void wxFont::Unshare()
 {
-    return new wxFontRefData;
-}
-
-wxObjectRefData* wxFont::CloneRefData(const wxObjectRefData* data) const
-{
-    return new wxFontRefData(*wx_static_cast(const wxFontRefData*, data));
+    // Don't change shared data
+    if (!m_refData)
+    {
+        m_refData = new wxFontRefData();
+    }
+    else
+    {
+        wxFontRefData* ref = new wxFontRefData(*(wxFontRefData*)m_refData);
+        UnRef();
+        m_refData = ref;
+    }
 }
 
 void wxFont::SetPointSize(int pointSize)
 {
-    AllocExclusive();
+    Unshare();
 
     M_FONTDATA->m_pointSize = pointSize;
 
@@ -472,7 +478,7 @@ void wxFont::SetPointSize(int pointSize)
 
 void wxFont::SetFamily(int family)
 {
-    AllocExclusive();
+    Unshare();
 
     M_FONTDATA->m_family = family;
 
@@ -481,7 +487,7 @@ void wxFont::SetFamily(int family)
 
 void wxFont::SetStyle(int style)
 {
-    AllocExclusive();
+    Unshare();
 
     M_FONTDATA->m_style = style;
 
@@ -490,7 +496,7 @@ void wxFont::SetStyle(int style)
 
 void wxFont::SetWeight(int weight)
 {
-    AllocExclusive();
+    Unshare();
 
     M_FONTDATA->m_weight = weight;
 
@@ -499,7 +505,7 @@ void wxFont::SetWeight(int weight)
 
 bool wxFont::SetFaceName(const wxString& faceName)
 {
-    AllocExclusive();
+    Unshare();
 
     M_FONTDATA->m_faceName = faceName;
 
@@ -510,7 +516,7 @@ bool wxFont::SetFaceName(const wxString& faceName)
 
 void wxFont::SetUnderlined(bool underlined)
 {
-    AllocExclusive();
+    Unshare();
 
     M_FONTDATA->m_underlined = underlined;
 
@@ -519,7 +525,7 @@ void wxFont::SetUnderlined(bool underlined)
 
 void wxFont::SetNoAntiAliasing( bool no )
 {
-    AllocExclusive();
+    Unshare();
 
     M_FONTDATA->SetNoAntiAliasing( no );
 
@@ -549,7 +555,7 @@ wxSize wxFont::GetPixelSize() const
     dc->GetTextExtent( wxT("g"), &width, &height, NULL, NULL);
     return wxSize((int)width, (int)height);
 #else
-    wxFontBase::GetPixelSize();
+    return wxFontBase::GetPixelSize();
 #endif
 }