void ArpOutlineListView::ComputeDimens(ArpDimens& cur_dimens) { float min_w=0, min_h=0; float pref_w=0, pref_h=0; int32 num = CountItems(); int32 max_num = 4; for( int32 i=0; i<num; i++ ) { BListItem* item = ItemAt(i); if( item ) { item->Update(this,BasicFont()); float w = item->Width(); float h = item->Height(); min_h = max(min_h,h); pref_w = max(pref_w,w); if( max_num > 0 ) pref_h += h; max_num--; } } pref_h+=2; float fw = BasicFont()->StringWidth("WWWW"); font_height fhs; BasicFont()->GetHeight(&fhs); float fh = fhs.ascent+fhs.descent+fhs.leading; min_w = max(min_w,fw); min_h = max(min_h,fh); pref_w = max(pref_w,min_w); pref_h = max(pref_h,min_h); cur_dimens.X().SetTo(0, min_w, pref_w, ArpAnySize, 0); cur_dimens.Y().SetTo(0, min_h, pref_h, ArpAnySize, 0); }
void MediaWindow::_UpdateListViewMinWidth() { float width = 0; for (int32 i = 0; i < fListView->CountItems(); i++) { BListItem* item = fListView->ItemAt(i); width = max_c(width, item->Width()); } fListView->SetExplicitMinSize(BSize(width, B_SIZE_UNSET)); fListView->InvalidateLayout(); }