- return (!(parent.IsOk()) && (this->m_dataViewControlPtr->AddItem(kDataBrowserNoItem,&itemID) == noErr) ||
- parent.IsOk() && (this->m_dataViewControlPtr->AddItem(reinterpret_cast<DataBrowserItemID>(parent.GetID()),&itemID) == noErr));
+ bool noFailureFlag = (!(parent.IsOk()) && (this->m_dataViewControlPtr->AddItem(kDataBrowserNoItem,&itemID) == noErr) ||
+ parent.IsOk() && (this->m_dataViewControlPtr->AddItem(reinterpret_cast<DataBrowserItemID>(parent.GetID()),&itemID) == noErr));
+
+ wxDataViewCtrl *dvc = (wxDataViewCtrl*) this->m_dataViewControlPtr->GetPeer();
+ if (dvc->GetWindowStyle() & wxDV_VARIABLE_LINE_HEIGHT)
+ {
+ 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 );
+ }
+
+ }
+
+ if (height > 20)
+ this->m_dataViewControlPtr->SetRowHeight( itemID, height );
+ }
+
+ return noFailureFlag;