If the native renderer doesn't support the properties which we map our
attributes to, trying to set them is useless and results in GTK+ warnings so
don't do it.
Add wxDataViewRenderer::GtkSupportsAttrs() which can be overridden to indicate
whether the renderer supports attributes or not. We probably could use
g_object_class_find_property() instead to detect it automatically but for now
these properties are all supported only by GtkCellRendererText and not
supported anywhere else so using a single virtual function seems tidier.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62591
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
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; }
virtual void SetAlignment( int align );
+ virtual bool GtkSupportsAttrs() const { return true; }
+
protected:
// implementation of Set/GetValue()
bool SetTextValue(const wxString& str);
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() )