From cda78e4f8e852651f5cc079016b3fd5513769e92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Mon, 23 Mar 2009 11:18:26 +0000 Subject: [PATCH] Fixed more inconsistencies in layouting the menu bar. These would mostly result in the BMenuField not always drawing all of the frame around the menu bar correctly, for example cutting off at left for divider = 0. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29660 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/os/interface/MenuField.h | 1 + src/kits/interface/MenuField.cpp | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) 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; }