* Make a BStatusBar comfortable to use without any text labels.
* In SetBarHeight(), use InvalidateLayout() when used with layout management. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35418 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
f0599fd4e4
commit
a487da80ba
@ -98,6 +98,7 @@ private:
|
||||
BRect _BarFrame(const font_height* fontHeight
|
||||
= NULL) const;
|
||||
float _BarPosition(const BRect& barFrame) const;
|
||||
bool _HasText() const;
|
||||
|
||||
BString fLabel;
|
||||
BString fTrailingLabel;
|
||||
|
@ -207,11 +207,14 @@ BStatusBar::GetPreferredSize(float* _width, float* _height)
|
||||
}
|
||||
|
||||
if (_height) {
|
||||
font_height fontHeight;
|
||||
GetFontHeight(&fontHeight);
|
||||
float labelHeight = 0;
|
||||
if (_HasText()) {
|
||||
font_height fontHeight;
|
||||
GetFontHeight(&fontHeight);
|
||||
labelHeight = ceilf(fontHeight.ascent + fontHeight.descent) + 6;
|
||||
}
|
||||
|
||||
*_height = ceilf(fontHeight.ascent + fontHeight.descent) + 6
|
||||
+ BarHeight();
|
||||
*_height = labelHeight + BarHeight();
|
||||
}
|
||||
}
|
||||
|
||||
@ -475,9 +478,13 @@ BStatusBar::SetBarHeight(float barHeight)
|
||||
return;
|
||||
|
||||
// resize so that the height fits
|
||||
float width, height;
|
||||
GetPreferredSize(&width, &height);
|
||||
ResizeTo(Bounds().Width(), height);
|
||||
if ((Flags() & B_SUPPORTS_LAYOUT) != 0) {
|
||||
InvalidateLayout();
|
||||
} else {
|
||||
float width, height;
|
||||
GetPreferredSize(&width, &height);
|
||||
ResizeTo(Bounds().Width(), height);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -813,13 +820,15 @@ BStatusBar::_SetTextData(BString& text, const char* source,
|
||||
BRect
|
||||
BStatusBar::_BarFrame(const font_height* fontHeight) const
|
||||
{
|
||||
float top;
|
||||
if (fontHeight == NULL) {
|
||||
font_height height;
|
||||
GetFontHeight(&height);
|
||||
top = ceilf(height.ascent + height.descent) + 6;
|
||||
} else
|
||||
top = ceilf(fontHeight->ascent + fontHeight->descent) + 6;
|
||||
float top = 2;
|
||||
if (_HasText()) {
|
||||
if (fontHeight == NULL) {
|
||||
font_height height;
|
||||
GetFontHeight(&height);
|
||||
top = ceilf(height.ascent + height.descent) + 6;
|
||||
} else
|
||||
top = ceilf(fontHeight->ascent + fontHeight->descent) + 6;
|
||||
}
|
||||
|
||||
return BRect(2, top, Bounds().right - 2, top + BarHeight() - 4);
|
||||
}
|
||||
@ -835,3 +844,10 @@ BStatusBar::_BarPosition(const BRect& barFrame) const
|
||||
+ (fCurrent * (barFrame.Width() + 3) / fMax));
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BStatusBar::_HasText() const
|
||||
{
|
||||
return fLabel.Length() > 0 || fTrailingLabel.Length() > 0
|
||||
|| fTrailingText.Length() > 0 || fText.Length() > 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user