diff --git a/src/richtext/richtextctrl.cpp b/src/richtext/richtextctrl.cpp index d8e4af28b3..117f93714d 100644 --- a/src/richtext/richtextctrl.cpp +++ b/src/richtext/richtextctrl.cpp @@ -3381,8 +3381,14 @@ void wxRichTextCtrl::DoWriteText(const wxString& value, int flags) void wxRichTextCtrl::AppendText(const wxString& text) { + const bool hasStyleStack = GetBuffer().GetStyleStackSize() > 0; + const wxRichTextAttr defaultStyle = GetDefaultStyleEx(); + SetInsertionPointEnd(); + if ( hasStyleStack ) + SetDefaultStyle(defaultStyle); + WriteText(text); } diff --git a/tests/controls/richtextctrltest.cpp b/tests/controls/richtextctrltest.cpp index 260b2976ad..86017aa3c2 100644 --- a/tests/controls/richtextctrltest.cpp +++ b/tests/controls/richtextctrltest.cpp @@ -699,6 +699,27 @@ TEST_CASE_METHOD(RichTextCtrlTestCase, "RichTextCtrl::TextColour", CHECK(colour.GetTextColour() == m_rich->GetBasicStyle().GetTextColour()); } +TEST_CASE_METHOD(RichTextCtrlTestCase, "RichTextCtrl::AppendTextStyle", + "[richtextctrl]") +{ + m_rich->BeginTextColour(*wxRED); + m_rich->WriteText("red"); + m_rich->EndTextColour(); + + m_rich->BeginTextColour(*wxBLUE); + m_rich->AppendText("blue"); + m_rich->EndTextColour(); + + wxTextAttr colour; + m_rich->GetStyle(1, colour); + + CHECK(colour.GetTextColour() == *wxRED); + + m_rich->GetStyle(5, colour); + + CHECK(colour.GetTextColour() == *wxBLUE); +} + TEST_CASE_METHOD(RichTextCtrlTestCase, "RichTextCtrl::NumberedBullet", "[richtextctrl]") {