diff --git a/include/wx/gtk/dvrenderer.h b/include/wx/gtk/dvrenderer.h index 5918f229f2..7f8d3d4782 100644 --- a/include/wx/gtk/dvrenderer.h +++ b/include/wx/gtk/dvrenderer.h @@ -77,6 +77,8 @@ public: // specific attributes: can return NULL if this renderer doesn't render any // text virtual GtkCellRendererText *GtkGetTextRenderer() const { return NULL; } + + wxDataViewCellMode GtkGetMode() { return m_mode; } protected: virtual void GtkOnCellChanged(const wxVariant& value, @@ -84,8 +86,9 @@ protected: unsigned col); - GtkCellRenderer *m_renderer; - int m_alignment; + GtkCellRenderer *m_renderer; + int m_alignment; + wxDataViewCellMode m_mode; // true if we hadn't changed any visual attributes or restored them since // doing this diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index f0e0d60b72..3bbb38b53b 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -1731,6 +1731,7 @@ wxDataViewRenderer::wxDataViewRenderer( const wxString &varianttype, wxDataViewC wxDataViewRendererBase( varianttype, mode, align ) { m_renderer = NULL; + m_mode = mode; // we haven't changed them yet m_usingDefaultAttrs = true; @@ -2945,6 +2946,19 @@ static void wxGtkTreeCellDataFunc( GtkTreeViewColumn *WXUNUSED(column), } // else: no custom attributes specified and we're already using the default // ones -- nothing to do + + // deal with disabled items + bool enabled = wx_model->IsEnabled( item, cell->GetOwner()->GetModelColumn()); + GValue gvalue = { 0, }; + g_value_init( &gvalue, G_TYPE_BOOLEAN ); + g_value_set_boolean( &gvalue, enabled ); + g_object_set_property( G_OBJECT(renderer), "sensitive", &gvalue ); + g_value_unset( &gvalue ); + + if (enabled) + cell->SetMode( cell->GtkGetMode() ); + else + cell->SetMode( wxDATAVIEW_CELL_INERT ); } } // extern "C"