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:
parent
227e55e5aa
commit
cda78e4f8e
|
@ -123,6 +123,7 @@ private:
|
|||
BRect frame, bool fixedSize);
|
||||
|
||||
void _ValidateLayoutData();
|
||||
float _MenuBarOffset() const;
|
||||
float _MenuBarWidthDiff() const;
|
||||
|
||||
char* fLabel;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue