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
This commit is contained in:
Robert Roebling
2008-05-18 17:40:34 +00:00
parent a2c9411060
commit 5c2cdf24eb

View 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();
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)
{
wxVariant value;
model->GetValue( value, item, column->GetModelColumn() );
renderer->SetValue( value );
height = wxMax( height, renderer->GetSize().y );
}
}
unsigned int colnum = dvc->GetColumnCount();
if (height > 20)
this->m_dataViewControlPtr->SetRowHeight( itemID, height );
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 col;
for (col = 0; col < colnum; col++)
{
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 );
}
}
// 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));
}