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
This commit is contained in:
Stephan Aßmus 2009-03-23 11:18:26 +00:00
parent 227e55e5aa
commit cda78e4f8e
2 changed files with 13 additions and 7 deletions

View File

@ -123,6 +123,7 @@ private:
BRect frame, bool fixedSize);
void _ValidateLayoutData();
float _MenuBarOffset() const;
float _MenuBarWidthDiff() const;
char* fLabel;

View File

@ -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;
}