From: Robert Roebling Date: Sun, 18 May 2008 17:40:34 +0000 (+0000) Subject: Correct remaining bits of variable height lines for wxMac, change highlight colour... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/5c2cdf24ebc38be8f93cb1f80f6d9a1456531ff2 Correct remaining bits of variable height lines for wxMac, change highlight colour to just white (query it?) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53642 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/mac/carbon/dataview.cpp b/src/mac/carbon/dataview.cpp index 101eaa9b33..12c78c7677 100644 --- a/src/mac/carbon/dataview.cpp +++ b/src/mac/carbon/dataview.cpp @@ -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(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(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)); }