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:
@@ -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();
|
||||
|
||||
int height = 20; // TODO find out standard height
|
||||
unsigned int num = dvc->GetColumnCount();
|
||||
unsigned int col;
|
||||
for (col = 0; col < num; col++)
|
||||
size_t i;
|
||||
size_t count = items.GetCount();
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
wxDataViewColumn *column = dvc->GetColumn( col );
|
||||
if (column->IsHidden())
|
||||
continue;
|
||||
wxDataViewItem item = items[i];
|
||||
DataBrowserItemID itemID(reinterpret_cast<DataBrowserItemID>(item.GetID()));
|
||||
|
||||
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));
|
||||
}
|
||||
|
Reference in New Issue
Block a user