diff --git a/headers/private/interface/ColumnTypes.h b/headers/private/interface/ColumnTypes.h index 6033cb626b..c9fc5882df 100644 --- a/headers/private/interface/ColumnTypes.h +++ b/headers/private/interface/ColumnTypes.h @@ -41,6 +41,8 @@ class BTitledColumn : public BColumn void Title (BString* forTitle) const; // sets the BString arg to be the title float FontHeight () const; + virtual float GetPreferredWidth(BField* field, BView* parent) const; + private: float fFontHeight; BString fTitle; diff --git a/src/kits/interface/ColumnTypes.cpp b/src/kits/interface/ColumnTypes.cpp index dee5efae4f..5298f19276 100644 --- a/src/kits/interface/ColumnTypes.cpp +++ b/src/kits/interface/ColumnTypes.cpp @@ -103,6 +103,15 @@ BTitledColumn::FontHeight() const } +float +BTitledColumn::GetPreferredWidth(BField *_field, BView* parent) const +{ + BFont font; + parent->GetFont(&font); + return font.StringWidth(fTitle.String()) + 2 * kTEXT_MARGIN; +} + + // #pragma mark - @@ -193,7 +202,9 @@ BStringColumn::GetPreferredWidth(BField *_field, BView* parent) const BStringField* field = static_cast(_field); BFont font; parent->GetFont(&font); - return font.StringWidth(field->String()) + 2 * kTEXT_MARGIN; + float width = font.StringWidth(field->String()) + 2 * kTEXT_MARGIN; + float parentWidth = BTitledColumn::GetPreferredWidth(_field, parent); + return max_c(width, parentWidth); }