]> git.saurik.com Git - wxWidgets.git/commitdiff
Fix for #15224: wxRichTextTable: Setting a cell's text colour affects subsequent...
authorJulian Smart <julian@anthemion.co.uk>
Thu, 19 Sep 2013 08:38:48 +0000 (08:38 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Thu, 19 Sep 2013 08:38:48 +0000 (08:38 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74842 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/richtext/richtextbuffer.cpp
src/richtext/richtextctrl.cpp

index 1877fd75689a7db3f68a98dfefe296f86e70c603..6c682aacad8c3c12555c8a156db4935a5b5c25e0 100644 (file)
@@ -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);
 
index e29da0ba904d45ba7786b8f9a280f8ae90e8ddc9..994130d1c5027164421a49efab1f033dfff839b1 100644 (file)
@@ -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;
         }
     }