void wxOSXDataViewModelNotifier::AdjustRowHeights(wxDataViewItemArray const& items) { if ((m_DataViewCtrlPtr->GetWindowStyle() & wxDV_VARIABLE_LINE_HEIGHT) != 0) { size_t const noOfItems = items.GetCount(); wxDataViewModel *model = GetOwner(); for (size_t itemIndex=0; itemIndex<noOfItems; ++itemIndex) { int height = 20; // TODO find out standard height unsigned int num = m_DataViewCtrlPtr->GetColumnCount(); unsigned int col; for (col = 0; col < num; col++) { wxDataViewColumn* column(m_DataViewCtrlPtr->GetColumnPtr(col)); if (!(column->IsHidden())) { wxDataViewCustomRenderer *renderer = dynamic_cast<wxDataViewCustomRenderer*>(column->GetRenderer()); if (renderer) { wxVariant value; model->GetValue( value, items[itemIndex], column->GetModelColumn() ); renderer->SetValue( value ); height = wxMax( height, renderer->GetSize().y ); } } } if (height > 20) m_DataViewCtrlPtr->GetDataViewPeer()->SetRowHeight(items[itemIndex],height); } } }
void wxOSXDataViewModelNotifier::AdjustAutosizedColumns() { unsigned count = m_DataViewCtrlPtr->GetColumnCount(); for ( unsigned col = 0; col < count; col++ ) { wxDataViewColumn *column = m_DataViewCtrlPtr->GetColumnPtr(col); if ( column->GetWidthVariable() == wxCOL_WIDTH_AUTOSIZE ) m_DataViewCtrlPtr->GetDataViewPeer()->FitColumnWidthToContent(col); } }