]> git.saurik.com Git - wxWidgets.git/blobdiff - src/richtext/richtextbuffer.cpp
Fix tracking rectangles in 64-bit build by remembering the tag as the 64-bit integer...
[wxWidgets.git] / src / richtext / richtextbuffer.cpp
index 38de2d611a4def25d9965b601b4a486a948ef86c..1936bb107aea52bb9322e025f608554424cfeb31 100644 (file)
@@ -61,6 +61,7 @@ inline void wxCheckSetFont(wxDC& dc, const wxFont& font)
             font1.GetFamily() == font.GetFamily() &&
             font1.GetStyle() == font.GetStyle() &&
             font1.GetWeight() == font.GetWeight() &&
+            font1.GetUnderlined() == font.GetUnderlined() &&
             font1.GetFaceName() == font.GetFaceName())
             return;
     }
@@ -2418,6 +2419,15 @@ void wxRichTextParagraphLayoutBox::Reset()
 {
     Clear();
 
+    wxRichTextBuffer* buffer = wxDynamicCast(this, wxRichTextBuffer);
+    if (buffer && GetRichTextCtrl())
+    {
+        wxRichTextEvent event(wxEVT_COMMAND_RICHTEXT_BUFFER_RESET, GetRichTextCtrl()->GetId());
+        event.SetEventObject(GetRichTextCtrl());
+
+        buffer->SendEvent(event, true);
+    }
+
     AddParagraph(wxEmptyString);
 
     Invalidate(wxRICHTEXT_ALL);
@@ -2473,6 +2483,29 @@ bool wxRichTextParagraphLayoutBox::ApplyStyleSheet(wxRichTextStyleSheet* styleSh
 
     int foundCount = 0;
 
+    wxRichTextAttr attr(GetBasicStyle());
+    if (GetBasicStyle().HasParagraphStyleName())
+    {
+        wxRichTextParagraphStyleDefinition* paraDef = styleSheet->FindParagraphStyle(GetBasicStyle().GetParagraphStyleName());
+        if (paraDef)
+        {
+            attr.Apply(paraDef->GetStyleMergedWithBase(styleSheet));
+            SetBasicStyle(attr);
+            foundCount ++;
+        }
+    }
+
+    if (GetBasicStyle().HasCharacterStyleName())
+    {
+        wxRichTextCharacterStyleDefinition* charDef = styleSheet->FindCharacterStyle(GetBasicStyle().GetCharacterStyleName());
+        if (charDef)
+        {
+            attr.Apply(charDef->GetStyleMergedWithBase(styleSheet));
+            SetBasicStyle(attr);
+            foundCount ++;
+        }
+    }
+
     wxRichTextObjectList::compatibility_iterator node = m_children.GetFirst();
     while (node)
     {
@@ -5603,9 +5636,20 @@ bool wxRichTextBuffer::PasteFromClipboard(long position)
                 wxTextDataObject data;
                 wxTheClipboard->GetData(data);
                 wxString text(data.GetText());
-                text.Replace(_T("\r\n"), _T("\n"));
-
-                InsertTextWithUndo(position+1, text, GetRichTextCtrl());
+#ifdef __WXMSW__
+                wxString text2;
+                text2.Alloc(text.Length()+1);
+                size_t i;
+                for (i = 0; i < text.Length(); i++)
+                {
+                    wxChar ch = text[i];
+                    if (ch != wxT('\r'))
+                        text2 += ch;
+                }
+#else
+                wxString text2 = text;
+#endif
+                InsertTextWithUndo(position+1, text2, GetRichTextCtrl());
 
                 success = true;
             }