diff --git a/headers/os/interface/MenuField.h b/headers/os/interface/MenuField.h index 70bf7a6746..77b81ad97e 100644 --- a/headers/os/interface/MenuField.h +++ b/headers/os/interface/MenuField.h @@ -123,6 +123,7 @@ private: BRect frame, bool fixedSize); void _ValidateLayoutData(); + float _MenuBarOffset() const; float _MenuBarWidthDiff() const; char* fLabel; diff --git a/src/kits/interface/MenuField.cpp b/src/kits/interface/MenuField.cpp index bd13d05d64..ffed7fed77 100644 --- a/src/kits/interface/MenuField.cpp +++ b/src/kits/interface/MenuField.cpp @@ -573,12 +573,10 @@ BMenuField::SetDivider(float divider) } else { BRect dirty(fMenuBar->Frame()); - fMenuBar->MoveTo(fDivider + 1, kVMargin); + fMenuBar->MoveTo(_MenuBarOffset(), kVMargin); - if (fFixedSizeMB) { - fMenuBar->ResizeTo(Bounds().Width() - fDivider - 2, - dirty.Height()); - } + if (fFixedSizeMB) + fMenuBar->ResizeTo(_MenuBarWidthDiff(), dirty.Height()); dirty = dirty | fMenuBar->Frame(); dirty.InsetBy(-kVMargin, -kVMargin); @@ -1034,7 +1032,7 @@ BMenuField::_InitMenuBar(BMenu* menu, BRect frame, bool fixedSize) fMenu = menu; InitMenu(menu); - frame.left = fDivider + 1; + frame.left = _MenuBarOffset(); frame.top = kVMargin; frame.right -= kVMargin; frame.bottom -= kVMargin; @@ -1125,10 +1123,17 @@ BMenuField::_ValidateLayoutData() } +float +BMenuField::_MenuBarOffset() const +{ + return max_c(kVMargin, fDivider + 1); +} + + float BMenuField::_MenuBarWidthDiff() const { - return fDivider + kVMargin + 1; + return _MenuBarOffset() + kVMargin; }