From ffdaec88eea113dc06336119accb7567fcdea976 Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Mon, 28 Mar 2022 21:28:10 -0700 Subject: [PATCH] Fix wxDataViewIconTextRenderer background on GTK Background attribute needs to be set on the icon renderer as well. See #19301 --- include/wx/gtk/dvrenderers.h | 2 ++ src/gtk/dataview.cpp | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/include/wx/gtk/dvrenderers.h b/include/wx/gtk/dvrenderers.h index 9d4091d90f..e81a5b5a63 100644 --- a/include/wx/gtk/dvrenderers.h +++ b/include/wx/gtk/dvrenderers.h @@ -216,6 +216,7 @@ protected: class WXDLLIMPEXP_ADV wxDataViewIconTextRenderer: public wxDataViewTextRenderer { + typedef wxDataViewTextRenderer BaseType; public: static wxString GetDefaultType() { return wxS("wxDataViewIconText"); } @@ -230,6 +231,7 @@ public: virtual void GtkPackIntoColumn(GtkTreeViewColumn *column) wxOVERRIDE; protected: + virtual void SetAttr(const wxDataViewItemAttr& attr) wxOVERRIDE; virtual wxVariant GtkGetValueFromString(const wxString& str) const wxOVERRIDE; private: diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index cb80d76648..8508292421 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -3136,6 +3136,26 @@ bool wxDataViewIconTextRenderer::GetValue(wxVariant& value) const return true; } +void wxDataViewIconTextRenderer::SetAttr(const wxDataViewItemAttr& attr) +{ + BaseType::SetAttr(attr); + + if (attr.HasBackgroundColour()) + { +#ifdef __WXGTK3__ + const GdkRGBA* rbga = attr.GetBackgroundColour(); + g_object_set(G_OBJECT(m_rendererIcon), "cell-background-rgba", rbga, NULL); +#else + const GdkColor* color = attr.GetBackgroundColour().GetColor(); + g_object_set(G_OBJECT(m_rendererIcon), "cell-background-gdk", color, NULL); +#endif + } + else + { + g_object_set(G_OBJECT(m_rendererIcon), "cell-background-set", false, NULL); + } +} + wxVariant wxDataViewIconTextRenderer::GtkGetValueFromString(const wxString& str) const {