diff --git a/headers/os/interface/MenuBar.h b/headers/os/interface/MenuBar.h index 8c0be34ea0..26e904ec01 100644 --- a/headers/os/interface/MenuBar.h +++ b/headers/os/interface/MenuBar.h @@ -81,7 +81,9 @@ public: // layout related + virtual BSize MinSize(); virtual BSize MaxSize(); + virtual BSize PreferredSize(); /*----- Private or reserved -----------------------------------------*/ virtual status_t Perform(perform_code d, void *arg); diff --git a/src/kits/interface/MenuBar.cpp b/src/kits/interface/MenuBar.cpp index 4b48a2ddf2..bdb4344cae 100644 --- a/src/kits/interface/MenuBar.cpp +++ b/src/kits/interface/MenuBar.cpp @@ -327,15 +327,26 @@ BMenuBar::Perform(perform_code d, void *arg) } +BSize +BMenuBar::MinSize() +{ + return BMenu::MinSize(); +} + + BSize BMenuBar::MaxSize() { - // TODO: cache the result - float width, height; - GetPreferredSize(&width, &height); - + BSize size = BMenu::MaxSize(); return BLayoutUtils::ComposeSize(ExplicitMaxSize(), - BSize(B_SIZE_UNLIMITED, height)); + BSize(B_SIZE_UNLIMITED, size.height)); +} + + +BSize +BMenuBar::PreferredSize() +{ + return BMenu::PreferredSize(); }