From 8ef17e41e1eea3a95ed0a0d9f41bb643dc490851 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 11 Jul 2014 22:17:24 +0100 Subject: [PATCH] Allow specifying a background colour per-column on a TreeListNode --- .../Controls/TreeListView/TreeListNode.cs | 40 +++++++++++++------ .../Controls/TreeListView/TreeListPainter.cs | 3 ++ 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/renderdocui/Controls/TreeListView/TreeListNode.cs b/renderdocui/Controls/TreeListView/TreeListNode.cs index 57f300023..911fe5a49 100644 --- a/renderdocui/Controls/TreeListView/TreeListNode.cs +++ b/renderdocui/Controls/TreeListView/TreeListNode.cs @@ -26,6 +26,8 @@ namespace TreelistView Color m_backCol = Color.Transparent; Color m_defbackCol = Color.Transparent; + Color[] m_backCols = null; + public TreeListView OwnerView = null; public Node Parent @@ -146,15 +148,24 @@ namespace TreelistView get { return m_defbackCol; } set { m_defbackCol = value; } } + public Color[] IndexedBackColor + { + get + { + return m_backCols; + } + } - public Node() - { - m_data = new object[1]; - } - public Node(string text) - { - m_data = new object[1] {text}; - } + public Node() + { + m_data = new object[1]; + m_backCols = new Color[1] { Color.Transparent }; + } + public Node(string text) + { + m_data = new object[1] { text }; + m_backCols = new Color[1] { Color.Transparent }; + } public Node(object[] fields) { SetData(fields); @@ -196,11 +207,14 @@ namespace TreelistView { return m_data; } - public void SetData(object[] fields) - { - m_data = new object[fields.Length]; - fields.CopyTo(m_data, 0); - } + public void SetData(object[] fields) + { + m_data = new object[fields.Length]; + fields.CopyTo(m_data, 0); + + m_backCols = new Color[fields.Length]; + for (int i = 0; i < fields.Length; i++) m_backCols[i] = Color.Transparent; + } public int VisibleNodeCount { get diff --git a/renderdocui/Controls/TreeListView/TreeListPainter.cs b/renderdocui/Controls/TreeListView/TreeListPainter.cs index 76ef0c927..36e563593 100644 --- a/renderdocui/Controls/TreeListView/TreeListPainter.cs +++ b/renderdocui/Controls/TreeListView/TreeListPainter.cs @@ -201,6 +201,9 @@ namespace TreelistView if (node.BackColor != Color.Transparent) c = node.BackColor; + + if (column.Index < node.IndexedBackColor.Length && node.IndexedBackColor[column.Index] != Color.Transparent) + c = node.IndexedBackColor[column.Index]; if (!m_owner.NodesSelection.Contains(node) && m_owner.FocusedNode != node && !(hoverNode == node && m_owner.RowOptions.HoverHighlight) &&