]> git.saurik.com Git - wxWidgets.git/commitdiff
Support diabling items in GTK+, see #12686: Allow disabling of wxDVC items
authorRobert Roebling <robert@roebling.de>
Sun, 19 Dec 2010 19:43:46 +0000 (19:43 +0000)
committerRobert Roebling <robert@roebling.de>
Sun, 19 Dec 2010 19:43:46 +0000 (19:43 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66404 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/dvrenderer.h
src/gtk/dataview.cpp

index 5918f229f2fbb0325e39231a3587ff156c856963..7f8d3d4782e318721c5002b38cfb0cea32c7c396 100644 (file)
@@ -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
index f0e0d60b72fe58f9bfefe596e3d49d5b87f299a7..3bbb38b53b02d583cd602f0b3728c3e821df05b9 100644 (file)
@@ -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"