diff --git a/src/apps/launchbox/LaunchButton.cpp b/src/apps/launchbox/LaunchButton.cpp index 81e78ab107..5e2d90ce8b 100644 --- a/src/apps/launchbox/LaunchButton.cpp +++ b/src/apps/launchbox/LaunchButton.cpp @@ -239,6 +239,44 @@ LaunchButton::MouseMoved(BPoint where, uint32 transit, const BMessage* dragMessa IconButton::MouseMoved(where, transit, dragMessage); } + +BSize +LaunchButton::MinSize() +{ + return PreferredSize(); +} + + +BSize +LaunchButton::PreferredSize() +{ + float minWidth = fIconSize; + float minHeight = fIconSize; + + float hPadding = max_c(4.0, ceilf(minHeight / 4.0)); + float vPadding = max_c(4.0, ceilf(minWidth / 4.0)); + + if (fLabel.CountChars() > 0) { + font_height fh; + GetFontHeight(&fh); + minHeight += ceilf(fh.ascent + fh.descent) + vPadding; + minWidth += StringWidth(fLabel.String()) + vPadding; + } + + return BSize(minWidth + hPadding, minHeight + vPadding); +} + + +BSize +LaunchButton::MaxSize() +{ + return PreferredSize(); +} + + +// #pragma mark - + + // SetTo void LaunchButton::SetTo(const entry_ref* ref) diff --git a/src/apps/launchbox/LaunchButton.h b/src/apps/launchbox/LaunchButton.h index e476e09f15..413890782b 100644 --- a/src/apps/launchbox/LaunchButton.h +++ b/src/apps/launchbox/LaunchButton.h @@ -40,6 +40,10 @@ class LaunchButton : public IconButton { virtual void MouseMoved(BPoint where, uint32 transit, const BMessage* dragMessage); + virtual BSize MinSize(); + virtual BSize PreferredSize(); + virtual BSize MaxSize(); + // LaunchButton void SetTo(const entry_ref* ref); entry_ref* Ref() const;