menufields should default to B_ITEMS_IN_COLUMN. This fixes the workspaces menu (in Screen) opened at the wrong position. As a consequence of this, I had to change the drawing code a bit
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15892 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
b120bcd665
commit
797d1a66fa
@ -69,12 +69,16 @@ BArchivable *_BMCItem_::Instantiate(BMessage *data)
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
void _BMCItem_::Draw()
|
void _BMCItem_::Draw()
|
||||||
{
|
{
|
||||||
BMenuItem::Draw();
|
BMenu *menu = Menu();
|
||||||
|
|
||||||
|
// Copy / pasted from BMenuItem::Draw(). We can't use it directly
|
||||||
|
// because we want to skip the Submenu symbol and the rest
|
||||||
|
menu->MovePenTo(ContentLocation());
|
||||||
|
DrawContent();
|
||||||
|
|
||||||
if (!fShowPopUpMarker)
|
if (!fShowPopUpMarker)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
BMenu *menu = Menu();
|
|
||||||
BRect rect(menu->Bounds());
|
BRect rect(menu->Bounds());
|
||||||
|
|
||||||
rect.right -= 4;
|
rect.right -= 4;
|
||||||
@ -119,7 +123,7 @@ _BMCFilter_ &_BMCFilter_::operator=(const _BMCFilter_ &)
|
|||||||
}*/
|
}*/
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
_BMCMenuBar_::_BMCMenuBar_(BRect frame, bool fixed_size, BMenuField *menuField)
|
_BMCMenuBar_::_BMCMenuBar_(BRect frame, bool fixed_size, BMenuField *menuField)
|
||||||
: BMenuBar(frame, "_mc_mb_", B_FOLLOW_LEFT | B_FOLLOW_TOP, B_ITEMS_IN_ROW,
|
: BMenuBar(frame, "_mc_mb_", B_FOLLOW_LEFT | B_FOLLOW_TOP, B_ITEMS_IN_COLUMN,
|
||||||
!fixed_size)
|
!fixed_size)
|
||||||
{
|
{
|
||||||
SetFlags(Flags() | B_FRAME_EVENTS);
|
SetFlags(Flags() | B_FRAME_EVENTS);
|
||||||
|
@ -356,6 +356,8 @@ BMenuItem::TruncateLabel(float maxWidth, char *newLabel)
|
|||||||
void
|
void
|
||||||
BMenuItem::DrawContent()
|
BMenuItem::DrawContent()
|
||||||
{
|
{
|
||||||
|
fSuper->CacheFontInfo();
|
||||||
|
|
||||||
fSuper->MovePenBy(0, fSuper->fAscent);
|
fSuper->MovePenBy(0, fSuper->fAscent);
|
||||||
BPoint lineStart = fSuper->PenLocation();
|
BPoint lineStart = fSuper->PenLocation();
|
||||||
|
|
||||||
@ -400,8 +402,6 @@ BMenuItem::Draw()
|
|||||||
// TODO: Cleanup
|
// TODO: Cleanup
|
||||||
bool enabled = IsEnabled();
|
bool enabled = IsEnabled();
|
||||||
|
|
||||||
fSuper->CacheFontInfo();
|
|
||||||
|
|
||||||
if (IsSelected() && (enabled || Submenu()) /*&& fSuper->fRedrawAfterSticky*/) {
|
if (IsSelected() && (enabled || Submenu()) /*&& fSuper->fRedrawAfterSticky*/) {
|
||||||
fSuper->SetHighColor(tint_color(ui_color(B_MENU_BACKGROUND_COLOR),
|
fSuper->SetHighColor(tint_color(ui_color(B_MENU_BACKGROUND_COLOR),
|
||||||
B_DARKEN_2_TINT));
|
B_DARKEN_2_TINT));
|
||||||
|
@ -252,15 +252,14 @@ BPopUpMenu::ScreenLocation()
|
|||||||
if (fUseWhere)
|
if (fUseWhere)
|
||||||
return fWhere;
|
return fWhere;
|
||||||
|
|
||||||
BMenuItem *item = Superitem();
|
BMenuItem *superItem = Superitem();
|
||||||
BMenu *menu = Supermenu();
|
BMenu *superMenu = Supermenu();
|
||||||
BMenuItem *selectedItem = FindItem(item->Label());
|
BMenuItem *selectedItem = FindItem(superItem->Label());
|
||||||
BRect rect = item->Frame();
|
BPoint point = superItem->Frame().LeftTop();
|
||||||
BPoint point = rect.LeftTop();
|
|
||||||
|
|
||||||
menu->ConvertToScreen(&point);
|
superMenu->ConvertToScreen(&point);
|
||||||
|
|
||||||
if (selectedItem)
|
if (selectedItem != NULL)
|
||||||
point.y -= selectedItem->Frame().top;
|
point.y -= selectedItem->Frame().top;
|
||||||
|
|
||||||
return point;
|
return point;
|
||||||
|
Loading…
Reference in New Issue
Block a user