]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/textcmn.cpp
fixing infinite recursion for rotated text, introduced in cleanup r57915
[wxWidgets.git] / src / common / textcmn.cpp
index 1df66feccb44b437bc6d08ecc6cf5ad1ac8a8935..6a806b2d777ceebed81b0732503243af0d189c03 100644 (file)
@@ -89,6 +89,7 @@ void wxTextAttr::Init()
     m_fontWeight = wxNORMAL;
     m_fontUnderlined = false;
     m_fontEncoding = wxFONTENCODING_DEFAULT;
+    m_fontFamily = wxFONTFAMILY_DEFAULT;
 
     m_paragraphSpacingAfter = 0;
     m_paragraphSpacingBefore = 0;
@@ -118,6 +119,7 @@ void wxTextAttr::Copy(const wxTextAttr& attr)
     m_fontUnderlined = attr.m_fontUnderlined;
     m_fontFaceName = attr.m_fontFaceName;
     m_fontEncoding = attr.m_fontEncoding;
+    m_fontFamily = attr.m_fontFamily;
     m_textEffects = attr.m_textEffects;
     m_textEffectFlags = attr.m_textEffectFlags;
 
@@ -181,6 +183,7 @@ bool wxTextAttr::operator== (const wxTextAttr& attr) const
             GetFontUnderlined() == attr.GetFontUnderlined() &&
             GetFontFaceName() == attr.GetFontFaceName() &&
             GetFontEncoding() == attr.GetFontEncoding() &&
+            GetFontFamily() == attr.GetFontFamily() &&
 
             GetURL() == attr.GetURL();
 }
@@ -218,6 +221,10 @@ bool wxTextAttr::EqPartial(const wxTextAttr& attr, int flags) const
         GetFontEncoding() != attr.GetFontEncoding())
         return false;
 
+    if ((flags & wxTEXT_ATTR_FONT_FAMILY) &&
+        GetFontFamily() != attr.GetFontFamily())
+        return false;
+
     if ((flags & wxTEXT_ATTR_URL) && GetURL() != attr.GetURL())
         return false;
 
@@ -326,7 +333,11 @@ wxFont wxTextAttr::GetFont() const
     if (HasFontEncoding())
         encoding = GetFontEncoding();
 
-    wxFont font(fontSize, wxDEFAULT, fontStyle, fontWeight, underlined, fontFaceName, encoding);
+    int fontFamily = wxFONTFAMILY_DEFAULT;
+    if (HasFontFamily())
+        fontFamily = GetFontFamily();
+
+    wxFont font(fontSize, fontFamily, fontStyle, fontWeight, underlined, fontFaceName, encoding);
 #ifdef __WXMAC__
     font.SetNoAntiAliasing(true);
 #endif
@@ -357,6 +368,9 @@ bool wxTextAttr::GetFontAttributes(const wxFont& font, int flags)
     if (flags & wxTEXT_ATTR_FONT_ENCODING)
         m_fontEncoding = font.GetEncoding();
 
+    if (flags & wxTEXT_ATTR_FONT_FAMILY)
+        m_fontFamily = font.GetFamily();
+
     m_flags |= flags;
 
     return true;
@@ -414,6 +428,12 @@ bool wxTextAttr::Apply(const wxTextAttr& style, const wxTextAttr* compareWith)
             destStyle.SetFontEncoding(style.GetFontEncoding());
     }
 
+    if (style.HasFontFamily())
+    {
+        if (!(compareWith && compareWith->HasFontFamily() && compareWith->GetFontFamily() == style.GetFontFamily()))
+            destStyle.SetFontFamily(style.GetFontFamily());
+    }
+
     if (style.GetTextColour().Ok() && style.HasTextColour())
     {
         if (!(compareWith && compareWith->HasTextColour() && compareWith->GetTextColour() == style.GetTextColour()))