From 8e3bbb68f0a25b4d708d4a47e072252bb66b3c20 Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Thu, 21 Nov 2013 15:25:37 +0000 Subject: [PATCH] Corrected bugs with text effects comparison and style removal git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75265 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/textcmn.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/common/textcmn.cpp b/src/common/textcmn.cpp index 488dd7b6f4..0f77d0a051 100644 --- a/src/common/textcmn.cpp +++ b/src/common/textcmn.cpp @@ -393,7 +393,7 @@ bool wxTextAttr::EqPartial(const wxTextAttr& attr, bool weakTest) const if (HasTextEffects() && attr.HasTextEffects()) { - if (!BitlistsEqPartial(GetTextEffects(), attr.GetTextEffects(), attr.GetTextEffectFlags())) + if (!BitlistsEqPartial(GetTextEffects(), attr.GetTextEffects(), GetTextEffectFlags())) return false; } @@ -817,6 +817,19 @@ bool wxTextAttr::RemoveStyle(wxTextAttr& destStyle, const wxTextAttr& style) int flags = style.GetFlags(); int destFlags = destStyle.GetFlags(); + // We must treat text effects specially, since we must remove only some. + if (style.HasTextEffects() && (style.GetTextEffectFlags() != 0)) + { + int newTextEffectFlags = destStyle.GetTextEffectFlags() & ~style.GetTextEffectFlags(); + int newTextEffects = destStyle.GetTextEffects() & ~style.GetTextEffectFlags(); + destStyle.SetTextEffects(newTextEffects); + destStyle.SetTextEffectFlags(newTextEffectFlags); + + // Don't remove wxTEXT_ATTR_EFFECTS unless the resulting flags are zero + if (newTextEffectFlags != 0) + flags &= ~wxTEXT_ATTR_EFFECTS; + } + destStyle.SetFlags(destFlags & ~flags); return true;