MenuWindow now uses the private window_feel "1025", which I guess we'll need to implement server side too, since it behaves differently than B_MODAL_WINDOW_FEEL. Menu items added to a menubar didn't appear immediately, so I forced an Invalidate(). Could be made better, I think.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10552 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
31e911da16
commit
b0d01b5f78
|
@ -173,7 +173,8 @@ BMenu::BMenu(BMessage *archive)
|
|||
}
|
||||
|
||||
|
||||
BArchivable *BMenu::Instantiate(BMessage *data)
|
||||
BArchivable *
|
||||
BMenu::Instantiate(BMessage *data)
|
||||
{
|
||||
if (validate_instantiation(data, "BMenu"))
|
||||
return new BMenu(data);
|
||||
|
@ -872,7 +873,7 @@ BMenu::ScreenLocation()
|
|||
point = superItem->Frame().LeftBottom() + BPoint(0.0f, 1.0f);
|
||||
|
||||
superMenu->ConvertToScreen(&point);
|
||||
|
||||
|
||||
return point;
|
||||
}
|
||||
|
||||
|
@ -1121,10 +1122,11 @@ BMenu::LayoutItems(int32 index)
|
|||
CalcTriggers();
|
||||
|
||||
float width, height;
|
||||
|
||||
ComputeLayout(index, true, true, &width, &height);
|
||||
|
||||
ResizeTo(width, height);
|
||||
|
||||
Invalidate();
|
||||
}
|
||||
|
||||
|
||||
|
@ -1318,9 +1320,13 @@ BMenu::DeleteMenuWindow()
|
|||
BMenuItem *
|
||||
BMenu::HitTestItems(BPoint where, BPoint slop) const
|
||||
{
|
||||
for (int i = 0; i < CountItems(); i++)
|
||||
if (ItemAt(i)->fBounds.Contains(where))
|
||||
return ItemAt(i);
|
||||
// TODO: Take "slop" into account ?
|
||||
int32 itemCount = CountItems();
|
||||
for (int32 i = 0; i < itemCount; i++) {
|
||||
BMenuItem *item = ItemAt(i);
|
||||
if (item->fBounds.Contains(where))
|
||||
return item;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1345,7 +1351,7 @@ BMenu::CacheFontInfo()
|
|||
GetFontHeight(&fh);
|
||||
fAscent = fh.ascent;
|
||||
fDescent = fh.descent;
|
||||
fFontHeight = (float)ceil(fh.ascent + fh.descent + 0.5f);
|
||||
fFontHeight = (float)ceil(fh.ascent + fh.descent + fh.leading);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -30,10 +30,13 @@
|
|||
|
||||
#include <MenuWindow.h>
|
||||
|
||||
// TODO: taken from Deskbar's WindowMenu.cpp.
|
||||
// this should go to some private header.
|
||||
const window_feel kMenuWindowFeel = (window_feel)1025;
|
||||
|
||||
BMenuWindow::BMenuWindow(BRect frame, BMenu *menu)
|
||||
:
|
||||
BWindow(frame, "Menu", B_NO_BORDER_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL,
|
||||
BWindow(frame, "Menu", B_NO_BORDER_WINDOW_LOOK, kMenuWindowFeel,
|
||||
B_NOT_ZOOMABLE)
|
||||
{
|
||||
fMenu = menu;
|
||||
|
|
Loading…
Reference in New Issue