X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/99f8cf22dbfae6d3f5b2ede918e3583f5b5c43f7..4e15d1caa03346c126015019c1fdf093033ef40b:/src/gtk/font.cpp?ds=sidebyside diff --git a/src/gtk/font.cpp b/src/gtk/font.cpp index 06260392d9..f2e48c3ca8 100644 --- a/src/gtk/font.cpp +++ b/src/gtk/font.cpp @@ -92,9 +92,8 @@ protected: void InitFromNative(); private: - bool m_underlined; - bool m_strikethrough; - // The native font info: basically a PangoFontDescription + // The native font info: basically a PangoFontDescription, plus + // 'underlined' and 'strikethrough' attributes not supported by Pango. wxNativeFontInfo m_nativeFontInfo; friend class wxFont; @@ -118,9 +117,6 @@ void wxFontRefData::Init(int pointSize, if (family == wxFONTFAMILY_DEFAULT) family = wxFONTFAMILY_SWISS; - m_underlined = underlined; - m_strikethrough = strikethrough; - // Create native font info m_nativeFontInfo.description = pango_font_description_new(); @@ -140,6 +136,8 @@ void wxFontRefData::Init(int pointSize, ? wxDEFAULT_FONT_SIZE : pointSize ); SetWeight( weight == wxDEFAULT ? wxFONTWEIGHT_NORMAL : weight ); + SetUnderlined( underlined ); + SetStrikethrough( strikethrough ); } void wxFontRefData::InitFromNative() @@ -151,18 +149,11 @@ void wxFontRefData::InitFromNative() int pango_size = pango_font_description_get_size( desc ); if (pango_size == 0) m_nativeFontInfo.SetPointSize(wxDEFAULT_FONT_SIZE); - - // Pango description are never underlined - m_underlined = false; - m_strikethrough = false; } wxFontRefData::wxFontRefData( const wxFontRefData& data ) : wxGDIRefData() { - m_underlined = data.m_underlined; - m_strikethrough = data.m_strikethrough; - // Forces a copy of the internal data. wxNativeFontInfo should probably // have a copy ctor and assignment operator to fix this properly but that // would break binary compatibility... @@ -243,17 +234,12 @@ void wxFontRefData::SetWeight(wxFontWeight weight) void wxFontRefData::SetUnderlined(bool underlined) { - m_underlined = underlined; - - // the Pango font descriptor does not have an underlined attribute - // (and wxNativeFontInfo::SetUnderlined asserts); rather it's - // wxWindowDCImpl::DoDrawText that handles underlined fonts, so we - // here we just need to save the underlined attribute + m_nativeFontInfo.SetUnderlined(underlined); } void wxFontRefData::SetStrikethrough(bool strikethrough) { - m_strikethrough = strikethrough; + m_nativeFontInfo.SetStrikethrough(strikethrough); } bool wxFontRefData::SetFaceName(const wxString& facename) @@ -287,6 +273,9 @@ wxFont::wxFont(const wxNativeFontInfo& info) info.GetUnderlined(), info.GetFaceName(), info.GetEncoding() ); + + if ( info.GetStrikethrough() ) + SetStrikethrough(true); } wxFont::wxFont(int pointSize, @@ -299,7 +288,8 @@ wxFont::wxFont(int pointSize, GetStyleFromFlags(flags), GetWeightFromFlags(flags), GetUnderlinedFromFlags(flags), - false, face, encoding); + GetStrikethroughFromFlags(flags), + face, encoding); } bool wxFont::Create( int pointSize, @@ -378,14 +368,14 @@ bool wxFont::GetUnderlined() const { wxCHECK_MSG( IsOk(), false, wxT("invalid font") ); - return M_FONTDATA->m_underlined; + return M_FONTDATA->m_nativeFontInfo.GetUnderlined(); } bool wxFont::GetStrikethrough() const { wxCHECK_MSG( IsOk(), false, wxT("invalid font") ); - return M_FONTDATA->m_strikethrough; + return M_FONTDATA->m_nativeFontInfo.GetStrikethrough(); } wxFontEncoding wxFont::GetEncoding() const