diff --git a/include/wx/gtk/dvrenderer.h b/include/wx/gtk/dvrenderer.h index 9513104c1c..e019c00883 100644 --- a/include/wx/gtk/dvrenderer.h +++ b/include/wx/gtk/dvrenderer.h @@ -53,6 +53,14 @@ public: void GtkInitHandlers(); void GtkUpdateAlignment(); + // should be overridden to return true if the renderer supports properties + // corresponding to wxDataViewItemAttr field, see wxGtkTreeCellDataFunc() + // for details + virtual bool GtkSupportsAttrs() const { return false; } + + // these functions are only called if GtkSupportsAttrs() returns true and + // are used to remember whether the renderer currently uses the default + // attributes or if we changed (and not reset them) bool GtkIsUsingDefaultAttrs() const { return m_usingDefaultAttrs; } void GtkSetUsingDefaultAttrs(bool def) { m_usingDefaultAttrs = def; } diff --git a/include/wx/gtk/dvrenderers.h b/include/wx/gtk/dvrenderers.h index 74c866ed40..845a938d34 100644 --- a/include/wx/gtk/dvrenderers.h +++ b/include/wx/gtk/dvrenderers.h @@ -41,6 +41,8 @@ public: virtual void SetAlignment( int align ); + virtual bool GtkSupportsAttrs() const { return true; } + protected: // implementation of Set/GetValue() bool SetTextValue(const wxString& str); diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index 26a3f53f28..5a5b89c2da 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -2587,7 +2587,15 @@ static void wxGtkTreeCellDataFunc( GtkTreeViewColumn *WXUNUSED(column), cell->SetValue( value ); - // deal with attributes + // deal with attributes if we can handle them here: currently this is only + // the case for wxDataViewTextRenderer (and derived) class(es) because + // GtkCellRendererText is the only GTK renderer that we use which supports + // the properties below (foreground_gdk, style, weight) -- if any other + // renderers added in the future support them too, they should simply + // override their GtkSupportsAttrs() to return true + if ( !cell->GtkSupportsAttrs() ) + return; + wxDataViewItemAttr attr; if ( !wx_model->GetAttr( item, cell->GetOwner()->GetModelColumn(), attr ) && cell->GtkIsUsingDefaultAttrs() )