]> git.saurik.com Git - wxWidgets.git/commitdiff
Added flag for removing attributes
authorJulian Smart <julian@anthemion.co.uk>
Wed, 7 Feb 2007 12:24:17 +0000 (12:24 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Wed, 7 Feb 2007 12:24:17 +0000 (12:24 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44399 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/richtextbuffer.tex
docs/latex/wx/richtextctrl.tex
include/wx/richtext/richtextbuffer.h
src/richtext/richtextbuffer.cpp

index 0879b6a7641716ecc93152d669f7b7528a3b903f..fac7924d32a7bec8390ff53cbd69f0cd74769802 100644 (file)
@@ -814,6 +814,7 @@ and not the content. This allows content styling to be preserved independently f
 \item wxRICHTEXT\_SETSTYLE\_CHARACTERS\_ONLY: specifies that the style should only be applied to characters,
 and not the paragraph. This allows content styling to be preserved independently from that of e.g. a named paragraph style.
 \item wxRICHTEXT\_SETSTYLE\_RESET: resets (clears) the existing style before applying the new style.
+\item wxRICHTEXT\_SETSTYLE\_REMOVE: removes the specified style. Only the style flags are used in this operation.
 \end{itemize}
 
 \membersection{wxRichTextBuffer::SetStyleSheet}\label{wxrichtextbuffersetstylesheet}
index deb1f91fba2561672a56e7d3dda5e9f271afbe33..58ebfb411c44bba4df4661de7eb0b8d835bbd69c 100644 (file)
@@ -1407,6 +1407,7 @@ and not the content. This allows content styling to be preserved independently f
 \item wxRICHTEXT\_SETSTYLE\_CHARACTERS\_ONLY: specifies that the style should only be applied to characters,
 and not the paragraph. This allows content styling to be preserved independently from that of e.g. a named paragraph style.
 \item wxRICHTEXT\_SETSTYLE\_RESET: resets (clears) the existing style before applying the new style.
+\item wxRICHTEXT\_SETSTYLE\_REMOVE: removes the specified style. Only the style flags are used in this operation.
 \end{itemize}
 
 \membersection{wxRichTextCtrl::SetStyleSheet}\label{wxrichtextctrlsetstylesheet}
index 1eb2856bfab64068dab5daa77105c3e97b3856a2..28892214816be888553465a7263fb1352b39ef50 100644 (file)
@@ -183,6 +183,9 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextBuffer;
 // Resets the existing style before applying the new style
 #define wxRICHTEXT_SETSTYLE_RESET           0x40
 
+// Removes the given style instead of applying it
+#define wxRICHTEXT_SETSTYLE_REMOVE          0x80
+
 /*!
  * Flags for text insertion
  */
@@ -2319,6 +2322,9 @@ WXDLLIMPEXP_RICHTEXT bool wxRichTextApplyStyle(wxRichTextAttr& destStyle, const
 WXDLLIMPEXP_RICHTEXT bool wxRichTextApplyStyle(wxTextAttrEx& destStyle, const wxRichTextAttr& style, wxRichTextAttr* compareWith = NULL);
 WXDLLIMPEXP_RICHTEXT bool wxRichTextApplyStyle(wxRichTextAttr& destStyle, const wxRichTextAttr& style, wxRichTextAttr* compareWith = NULL);
 
+// Remove attributes
+WXDLLIMPEXP_RICHTEXT bool wxRichTextRemoveStyle(wxTextAttrEx& destStyle, const wxRichTextAttr& style);
+
 /// Combine two bitlists
 WXDLLIMPEXP_RICHTEXT bool wxRichTextCombineBitlists(int& valueA, int valueB, int& flagsA, int flagsB);
 
index d0eaa2a810c042bb3fdc5452bdc94fb3065b408b..47f1e8d8e3082036cd07b53768fcbf39ed03083c 100644 (file)
@@ -1561,11 +1561,12 @@ bool wxRichTextParagraphLayoutBox::SetStyle(const wxRichTextRange& range, const
     bool parasOnly = ((flags & wxRICHTEXT_SETSTYLE_PARAGRAPHS_ONLY) != 0);
     bool charactersOnly = ((flags & wxRICHTEXT_SETSTYLE_CHARACTERS_ONLY) != 0);
     bool resetExistingStyle = ((flags & wxRICHTEXT_SETSTYLE_RESET) != 0);
+    bool removeStyle = ((flags & wxRICHTEXT_SETSTYLE_REMOVE) != 0);
 
     // Apply paragraph style first, if any
     wxRichTextAttr wholeStyle(style);
 
-    if (wholeStyle.HasParagraphStyleName() && GetStyleSheet())
+    if (!removeStyle && wholeStyle.HasParagraphStyleName() && GetStyleSheet())
     {
         wxRichTextParagraphStyleDefinition* def = GetStyleSheet()->FindParagraphStyle(wholeStyle.GetParagraphStyleName());
         if (def)
@@ -1576,7 +1577,7 @@ bool wxRichTextParagraphLayoutBox::SetStyle(const wxRichTextRange& range, const
     wxRichTextAttr characterAttributes(wholeStyle);
     characterAttributes.SetFlags(characterAttributes.GetFlags() & (wxTEXT_ATTR_CHARACTER));
 
-    if (characterAttributes.HasCharacterStyleName() && GetStyleSheet())
+    if (!removeStyle && characterAttributes.HasCharacterStyleName() && GetStyleSheet())
     {
         wxRichTextCharacterStyleDefinition* def = GetStyleSheet()->FindCharacterStyle(characterAttributes.GetCharacterStyleName());
         if (def)
@@ -1630,7 +1631,12 @@ bool wxRichTextParagraphLayoutBox::SetStyle(const wxRichTextRange& range, const
                 // to be included in the paragraph style
                 if ((paragraphStyle || parasOnly) && !charactersOnly)
                 {
-                    if (resetExistingStyle)
+                    if (removeStyle)
+                    {
+                        // Removes the given style from the paragraph
+                        wxRichTextRemoveStyle(newPara->GetAttributes(), style);
+                    }
+                    else if (resetExistingStyle)
                         newPara->GetAttributes() = wholeStyle;
                     else
                     {
@@ -1705,7 +1711,12 @@ bool wxRichTextParagraphLayoutBox::SetStyle(const wxRichTextRange& range, const
                     {
                         wxRichTextObject* child = node2->GetData();
 
-                        if (resetExistingStyle)
+                        if (removeStyle)
+                        {
+                            // Removes the given style from the paragraph
+                            wxRichTextRemoveStyle(child->GetAttributes(), style);
+                        }
+                        else if (resetExistingStyle)
                             child->GetAttributes() = characterAttributes;
                         else
                         {
@@ -7099,6 +7110,17 @@ bool wxRichTextApplyStyle(wxTextAttrEx& destStyle, const wxRichTextAttr& style,
     return true;
 }
 
+// Remove attributes
+bool wxRichTextRemoveStyle(wxTextAttrEx& destStyle, const wxRichTextAttr& style)
+{
+    int flags = style.GetFlags();
+    int destFlags = destStyle.GetFlags();
+
+    destStyle.SetFlags(destFlags & ~flags);
+
+    return true;
+}
+
 /// Combine two bitlists, specifying the bits of interest with separate flags.
 bool wxRichTextCombineBitlists(int& valueA, int valueB, int& flagsA, int flagsB)
 {