]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/dataview.cpp
Correct text colour in wxIconTextRenderer
[wxWidgets.git] / src / gtk / dataview.cpp
index 04d3f1d81169f702694a086cd5fd79ee595a970d..f7cde98bbaa67996992ec2fdab3e7885da3087f3 100644 (file)
@@ -467,7 +467,8 @@ wxgtk_tree_model_get_column_type (GtkTreeModel *tree_model,
         gtype = G_TYPE_STRING;
     else
     {
-        wxFAIL_MSG( _T("non-string columns not supported yet") );
+        gtype = G_TYPE_STRING;
+        // wxFAIL_MSG( _T("non-string columns not supported yet") );
     }
 
     return gtype;
@@ -2024,8 +2025,40 @@ static void wxGtkTreeCellDataFunc( GtkTreeViewColumn *column,
 
     wxDataViewItem item( (void*) iter->user_data );
 
+    wxDataViewModel *wx_model = tree_model->internal->GetDataViewModel();
+
+    if (wx_model->IsContainer( item ))
+    {
+        if (wx_model->HasContainerColumns( item ) || (cell->GetOwner()->GetModelColumn() == 0))
+        {
+            GValue gvalue = { 0, };
+            g_value_init( &gvalue, G_TYPE_BOOLEAN );
+            g_value_set_boolean( &gvalue, TRUE );
+            g_object_set_property( G_OBJECT(renderer), "visible", &gvalue );
+            g_value_unset( &gvalue );
+        }
+        else
+        {
+            GValue gvalue = { 0, };
+            g_value_init( &gvalue, G_TYPE_BOOLEAN );
+            g_value_set_boolean( &gvalue, FALSE );
+            g_object_set_property( G_OBJECT(renderer), "visible", &gvalue );
+            g_value_unset( &gvalue );
+            
+            return;
+        }
+    }
+    else
+    {
+        GValue gvalue = { 0, };
+        g_value_init( &gvalue, G_TYPE_BOOLEAN );
+        g_value_set_boolean( &gvalue, TRUE );
+        g_object_set_property( G_OBJECT(renderer), "visible", &gvalue );
+        g_value_unset( &gvalue );
+    }
+
     wxVariant value;
-    tree_model->internal->GetDataViewModel()->GetValue( value, item, cell->GetOwner()->GetModelColumn() );
+    wx_model->GetValue( value, item, cell->GetOwner()->GetModelColumn() );
 
     if (value.GetType() != cell->GetVariantType())
         wxLogError( wxT("Wrong type, required: %s but: %s"),
@@ -2036,7 +2069,7 @@ static void wxGtkTreeCellDataFunc( GtkTreeViewColumn *column,
 
 #if 0
     wxListItemAttr attr;
-    tree_model->model->GetAttr( attr, cell->GetOwner()->GetModelColumn(), model_row );
+    wx_model->GetAttr( item, attr, cell->GetOwner()->GetModelColumn() );
 
     if (attr.HasBackgroundColour())
     {
@@ -2574,11 +2607,12 @@ gboolean wxDataViewCtrlInternal::iter_children( GtkTreeIter *iter, GtkTreeIter *
 gboolean wxDataViewCtrlInternal::iter_has_child( GtkTreeIter *iter )
 {
     wxDataViewItem item( (void*) iter->user_data );
+    
     bool is_container = m_wx_model->IsContainer( item );
     
     if (!is_container)
         return FALSE;
-    
+        
     wxGtkTreeModelNode *node = FindNode( iter );
     BuildBranch( node );
     
@@ -2641,6 +2675,7 @@ wxDataViewCtrlInternal_FindNode( wxDataViewModel * model, wxGtkTreeModelNode *tr
     ItemList list;
     list.DeleteContents( true );
     wxDataViewItem it( item );
+    
     while( it.IsOk() )
     {
         wxDataViewItem * pItem = new wxDataViewItem( it );