diff --git a/headers/os/interface/StatusBar.h b/headers/os/interface/StatusBar.h index 6b41f98137..1ce3976dc6 100644 --- a/headers/os/interface/StatusBar.h +++ b/headers/os/interface/StatusBar.h @@ -14,6 +14,8 @@ class BStatusBar : public BView { public: BStatusBar(BRect frame, const char* name, const char* label = NULL, const char* trailingLabel = NULL); + BStatusBar(const char* name, const char* label = NULL, + const char* trailingLabel = NULL); BStatusBar(BMessage* archive); virtual ~BStatusBar(); @@ -69,6 +71,11 @@ class BStatusBar : public BView { virtual status_t Perform(perform_code d, void* arg); + // Layout methods + virtual BSize MinSize(); + virtual BSize MaxSize(); + virtual BSize PreferredSize(); + private: virtual void _ReservedStatusBar2(); virtual void _ReservedStatusBar3(); diff --git a/src/kits/interface/StatusBar.cpp b/src/kits/interface/StatusBar.cpp index c6aa413035..8368771bdb 100644 --- a/src/kits/interface/StatusBar.cpp +++ b/src/kits/interface/StatusBar.cpp @@ -13,6 +13,9 @@ #include #include +#include +#include + #include #include @@ -30,6 +33,17 @@ BStatusBar::BStatusBar(BRect frame, const char *name, const char *label, } +BStatusBar::BStatusBar(const char *name, const char *label, + const char *trailingLabel) + : BView(BRect(0, 0, -1, -1), name, B_FOLLOW_LEFT | B_FOLLOW_TOP, + B_WILL_DRAW | B_SUPPORTS_LAYOUT), + fLabel(label), + fTrailingLabel(trailingLabel) +{ + _InitObject(); +} + + BStatusBar::BStatusBar(BMessage *archive) : BView(archive) { @@ -580,6 +594,37 @@ BStatusBar::GetSupportedSuites(BMessage* data) } +BSize +BStatusBar::MinSize() +{ + float width, height; + GetPreferredSize(&width, &height); + + return BLayoutUtils::ComposeSize(ExplicitMaxSize(), BSize(width, height)); +} + + +BSize +BStatusBar::MaxSize() +{ + float width, height; + GetPreferredSize(&width, &height); + + return BLayoutUtils::ComposeSize(ExplicitMaxSize(), + BSize(B_SIZE_UNLIMITED, height)); +} + + +BSize +BStatusBar::PreferredSize() +{ + float width, height; + GetPreferredSize(&width, &height); + + return BLayoutUtils::ComposeSize(ExplicitMaxSize(), BSize(width, height)); +} + + status_t BStatusBar::Perform(perform_code d, void* arg) {