X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/177df6c5f6c24251cab056ce39e206ec3fd6b44b..1722a3f626f7b29b42a22fc6329ce12fb5e8ed90:/src/gtk/font.cpp diff --git a/src/gtk/font.cpp b/src/gtk/font.cpp index 8dbe0064bd..94cc8e66d5 100644 --- a/src/gtk/font.cpp +++ b/src/gtk/font.cpp @@ -31,10 +31,7 @@ #include "wx/fontutil.h" #include "wx/tokenzr.h" -#include - #include "wx/gtk/private.h" -#include // ---------------------------------------------------------------------------- // constants @@ -130,6 +127,8 @@ private: friend class wxFont; }; +#define M_FONTDATA ((wxFontRefData*)m_refData) + // ---------------------------------------------------------------------------- // wxFontRefData // ---------------------------------------------------------------------------- @@ -158,6 +157,8 @@ void wxFontRefData::Init(int pointSize, m_underlined = underlined; m_encoding = encoding; + if ( m_encoding == wxFONTENCODING_DEFAULT ) + m_encoding = wxFont::GetDefaultEncoding(); m_noAA = false; @@ -202,7 +203,7 @@ void wxFontRefData::InitFromNative() PangoFontDescription *desc = m_nativeFontInfo.description; // init fields - m_faceName = wxGTK_CONV_BACK( pango_font_description_get_family( desc ) ); + m_faceName = wxGTK_CONV_BACK_SYS(pango_font_description_get_family(desc)); // Pango sometimes needs to have a size int pango_size = pango_font_description_get_size( desc ); @@ -392,20 +393,6 @@ bool wxFont::Create(const wxString& fontname) return true; } -void wxFont::Unshare() -{ - if (!m_refData) - { - m_refData = new wxFontRefData(); - } - else - { - wxFontRefData* ref = new wxFontRefData(*(wxFontRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - wxFont::~wxFont() { } @@ -502,35 +489,35 @@ bool wxFont::IsFixedWidth() const void wxFont::SetPointSize(int pointSize) { - Unshare(); + AllocExclusive(); M_FONTDATA->SetPointSize(pointSize); } void wxFont::SetFamily(int family) { - Unshare(); + AllocExclusive(); M_FONTDATA->SetFamily(family); } void wxFont::SetStyle(int style) { - Unshare(); + AllocExclusive(); M_FONTDATA->SetStyle(style); } void wxFont::SetWeight(int weight) { - Unshare(); + AllocExclusive(); M_FONTDATA->SetWeight(weight); } bool wxFont::SetFaceName(const wxString& faceName) { - Unshare(); + AllocExclusive(); return M_FONTDATA->SetFaceName(faceName) && wxFontBase::SetFaceName(faceName); @@ -538,28 +525,38 @@ bool wxFont::SetFaceName(const wxString& faceName) void wxFont::SetUnderlined(bool underlined) { - Unshare(); + AllocExclusive(); M_FONTDATA->SetUnderlined(underlined); } void wxFont::SetEncoding(wxFontEncoding encoding) { - Unshare(); + AllocExclusive(); M_FONTDATA->SetEncoding(encoding); } void wxFont::DoSetNativeFontInfo( const wxNativeFontInfo& info ) { - Unshare(); + AllocExclusive(); M_FONTDATA->SetNativeFontInfo( info ); } void wxFont::SetNoAntiAliasing( bool no ) { - Unshare(); + AllocExclusive(); M_FONTDATA->SetNoAntiAliasing( no ); } + +wxObjectRefData* wxFont::CreateRefData() const +{ + return new wxFontRefData; +} + +wxObjectRefData* wxFont::CloneRefData(const wxObjectRefData* data) const +{ + return new wxFontRefData(*wx_static_cast(const wxFontRefData*, data)); +}