From d23c482278b5fb5e926b4e23e5fb6577ae4211c7 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Mon, 13 Aug 2007 23:34:06 +0000 Subject: [PATCH] =?UTF-8?q?Patch=20by=20=C5=81ukasz=20'Sil2100'=20Zemczak:?= =?UTF-8?q?=20Made=20BStatusBar=20layout=20friendly.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21936 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/os/interface/StatusBar.h | 7 +++++ src/kits/interface/StatusBar.cpp | 45 ++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) 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) {