From: Julian Smart Date: Thu, 19 Sep 2013 08:38:48 +0000 (+0000) Subject: Fix for #15224: wxRichTextTable: Setting a cell's text colour affects subsequent... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/0cae0a4e1830b34fcc69cc9fa1d04b528c2a1fb4 Fix for #15224: wxRichTextTable: Setting a cell's text colour affects subsequent cells (dghart) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74842 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/richtext/richtextbuffer.cpp b/src/richtext/richtextbuffer.cpp index 1877fd7568..6c682aacad 100644 --- a/src/richtext/richtextbuffer.cpp +++ b/src/richtext/richtextbuffer.cpp @@ -10310,6 +10310,9 @@ bool wxRichTextTable::CreateTable(int rows, int cols) { ClearTable(); + wxRichTextAttr cellattr; + cellattr.SetTextColour(GetBasicStyle().GetTextColour()); + m_rowCount = rows; m_colCount = cols; @@ -10322,6 +10325,8 @@ bool wxRichTextTable::CreateTable(int rows, int cols) for (j = 0; j < cols; j++) { wxRichTextCell* cell = new wxRichTextCell; + cell->GetAttributes() = cellattr; + AppendChild(cell); cell->AddParagraph(wxEmptyString); diff --git a/src/richtext/richtextctrl.cpp b/src/richtext/richtextctrl.cpp index e29da0ba90..994130d1c5 100644 --- a/src/richtext/richtextctrl.cpp +++ b/src/richtext/richtextctrl.cpp @@ -3009,6 +3009,12 @@ wxRichTextBox* wxRichTextCtrl::WriteTextBox(const wxRichTextAttr& textAttr) textBox->AddParagraph(wxEmptyString); textBox->SetParent(NULL); + // If the box has an invalid foreground colour, its text will mimic any upstream value (see #15224) + if (!textBox->GetAttributes().GetTextColour().IsOk()) + { + textBox->GetAttributes().SetTextColour(GetBasicStyle().GetTextColour()); + } + // The object returned is the one actually inserted into the buffer, // while the original one is deleted. wxRichTextObject* obj = GetFocusObject()->InsertObjectWithUndo(& GetBuffer(), m_caretPosition+1, textBox, this, wxRICHTEXT_INSERT_WITH_PREVIOUS_PARAGRAPH_STYLE); @@ -3034,17 +3040,25 @@ wxRichTextTable* wxRichTextCtrl::WriteTable(int rows, int cols, const wxRichText wxRichTextTable* table = new wxRichTextTable; table->SetAttributes(tableAttr); table->SetParent(& GetBuffer()); // set parent temporarily for AddParagraph to use correct style + table->SetBasicStyle(GetBasicStyle()); table->CreateTable(rows, cols); table->SetParent(NULL); + // If cells have an invalid foreground colour, their text will mimic any upstream value (see #15224) + wxRichTextAttr attr = cellAttr; + if (!attr.GetTextColour().IsOk()) + { + attr.SetTextColour(GetBasicStyle().GetTextColour()); + } + int i, j; for (j = 0; j < rows; j++) { for (i = 0; i < cols; i++) { - table->GetCell(j, i)->GetAttributes() = cellAttr; + table->GetCell(j, i)->GetAttributes() = attr; } }