From 34ef8378c52e2e520a4ed34e4f5239cd9d2c415e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Sun, 16 Nov 2008 22:14:10 +0000 Subject: [PATCH] Fixed the problem that icon buttons are too small when creating new ones. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28667 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/launchbox/LaunchButton.cpp | 38 +++++++++++++++++++++++++++++ src/apps/launchbox/LaunchButton.h | 4 +++ 2 files changed, 42 insertions(+) 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;