]> git.saurik.com Git - wxWidgets.git/commitdiff
Correct remaining bits of variable height lines for wxMac, change highlight colour...
authorRobert Roebling <robert@roebling.de>
Sun, 18 May 2008 17:40:34 +0000 (17:40 +0000)
committerRobert Roebling <robert@roebling.de>
Sun, 18 May 2008 17:40:34 +0000 (17:40 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53642 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/dataview.cpp

index 101eaa9b33a952b0f3371e4767cf0e3447c67054..12c78c7677132093df52023951e8258064efee91 100644 (file)
@@ -273,33 +273,40 @@ public:
     wxDataViewCtrl *dvc = (wxDataViewCtrl*) this->m_dataViewControlPtr->GetPeer();
     if (dvc->GetWindowStyle() & wxDV_VARIABLE_LINE_HEIGHT)
     {
-         wxDataViewItem item = items[0];  // TODO get all items
-         DataBrowserItemID itemID(reinterpret_cast<DataBrowserItemID>(item.GetID()));
-    
         wxDataViewModel *model = GetOwner();
+        unsigned int colnum = dvc->GetColumnCount();
+        
+        size_t i;
+        size_t count = items.GetCount();
+        for (i = 0; i < count; i++)
+        { 
+            wxDataViewItem item = items[i];
+            DataBrowserItemID itemID(reinterpret_cast<DataBrowserItemID>(item.GetID()));
     
-        int height = 20; // TODO find out standard height
-        unsigned int num = dvc->GetColumnCount();
-        unsigned int col;
-        for (col = 0; col < num; col++)
-        {
-            wxDataViewColumn *column = dvc->GetColumn( col );
-            if (column->IsHidden())
-                continue;
-                
-            wxDataViewCustomRenderer *renderer = wxDynamicCast( column->GetRenderer(), wxDataViewCustomRenderer );
-            if (renderer)
+            int height = 20; // TODO find out standard height
+            unsigned int col;
+            for (col = 0; col < colnum; col++)
             {
-                wxVariant value;
-                model->GetValue( value, item, column->GetModelColumn() );
-                renderer->SetValue( value );
-                height = wxMax( height, renderer->GetSize().y );
-            }
+                wxDataViewColumn *column = dvc->GetColumn( col );
+                if (column->IsHidden())
+                    continue;      // skip it!
+                
+                if ((col != 0) && model->IsContainer(item) && !model->HasContainerColumns(item))
+                    continue;      // skip it!
             
-        }
+                wxDataViewCustomRenderer *renderer = wxDynamicCast( column->GetRenderer(), wxDataViewCustomRenderer );
+                if (renderer)
+                {
+                    wxVariant value;
+                    model->GetValue( value, item, column->GetModelColumn() );
+                    renderer->SetValue( value );
+                    height = wxMax( height, renderer->GetSize().y );
+                }
+            }
         
-        if (height > 20)
-            this->m_dataViewControlPtr->SetRowHeight( itemID, height );
+            if (height > 20)
+                this->m_dataViewControlPtr->SetRowHeight( itemID, height );
+        }
    }    
     
    // done:
@@ -546,7 +553,8 @@ wxDataViewCustomRenderer::~wxDataViewCustomRenderer(void)
 void wxDataViewCustomRenderer::RenderText( const wxString &text, int xoffset, wxRect cell, wxDC *dc, int state )
 {
     wxDataViewCtrl *view = GetOwner()->GetOwner();
-    wxColour col = (state & wxDATAVIEW_CELL_SELECTED) ? wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT) : view->GetForegroundColour();
+//    wxColour col = (state & wxDATAVIEW_CELL_SELECTED) ? wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT) : view->GetForegroundColour();
+    wxColour col = (state & wxDATAVIEW_CELL_SELECTED) ? *wxWHITE : view->GetForegroundColour();
     dc->SetTextForeground(col);
     dc->DrawText( text, cell.x + xoffset, cell.y + ((cell.height - dc->GetCharHeight()) / 2));
 }