From 1f492539e7773137ea600d08870497887e750379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sun, 2 Nov 2008 12:34:31 +0000 Subject: [PATCH] implemented PartitionColumn::GetPreferredWidth() git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28462 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/drivesetup/PartitionList.cpp | 29 +++++++++++++++++++++++++++ src/apps/drivesetup/PartitionList.h | 1 + 2 files changed, 30 insertions(+) diff --git a/src/apps/drivesetup/PartitionList.cpp b/src/apps/drivesetup/PartitionList.cpp index b0699d06d5..17261c4851 100644 --- a/src/apps/drivesetup/PartitionList.cpp +++ b/src/apps/drivesetup/PartitionList.cpp @@ -127,6 +127,35 @@ PartitionColumn::DrawField(BField* field, BRect rect, BView* parent) } } + +float +PartitionColumn::GetPreferredWidth(BField *_field, BView* parent) const +{ + BBitmapStringField* bitmapField + = dynamic_cast(_field); + BStringField* stringField = dynamic_cast(_field); + + float parentWidth = Inherited::GetPreferredWidth(_field, parent); + float width = 0.0; + + if (bitmapField) { + const BBitmap* bitmap = bitmapField->Bitmap(); + BFont font; + parent->GetFont(&font); + width = font.StringWidth(bitmapField->String()) + 3 * fTextMargin; + if (bitmap) + width += bitmap->Bounds().Width(); + else + width += 16; + } else if (stringField) { + BFont font; + parent->GetFont(&font); + width = font.StringWidth(stringField->String()) + 2 * fTextMargin; + } + return max_c(width, parentWidth); +} + + bool PartitionColumn::AcceptsField(const BField* field) const { diff --git a/src/apps/drivesetup/PartitionList.h b/src/apps/drivesetup/PartitionList.h index c180b042ae..7dee17abf4 100644 --- a/src/apps/drivesetup/PartitionList.h +++ b/src/apps/drivesetup/PartitionList.h @@ -49,6 +49,7 @@ public: virtual void DrawField(BField* field, BRect rect, BView* parent); + virtual float GetPreferredWidth(BField* field, BView* parent) const; virtual bool AcceptsField(const BField* field) const;