BMenuItem didn't draw the modifier indicator for B_OPTION_KEY. Fixes ticket #3887
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30661 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -2025,7 +2025,7 @@ BMenu::_ComputeColumnLayout(int32 index, bool bestFit, bool moveItems,
|
|||||||
bool command = false;
|
bool command = false;
|
||||||
bool control = false;
|
bool control = false;
|
||||||
bool shift = false;
|
bool shift = false;
|
||||||
|
bool option = false;
|
||||||
if (index > 0)
|
if (index > 0)
|
||||||
frame = ItemAt(index - 1)->Frame();
|
frame = ItemAt(index - 1)->Frame();
|
||||||
else
|
else
|
||||||
@@ -2045,6 +2045,8 @@ BMenu::_ComputeColumnLayout(int32 index, bool bestFit, bool moveItems,
|
|||||||
control = true;
|
control = true;
|
||||||
if (item->fModifiers & B_SHIFT_KEY)
|
if (item->fModifiers & B_SHIFT_KEY)
|
||||||
shift = true;
|
shift = true;
|
||||||
|
if (item->fModifiers & B_OPTION_KEY)
|
||||||
|
option = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
item->fBounds.left = 0.0f;
|
item->fBounds.left = 0.0f;
|
||||||
@@ -2063,6 +2065,8 @@ BMenu::_ComputeColumnLayout(int32 index, bool bestFit, bool moveItems,
|
|||||||
frame.right += 17;
|
frame.right += 17;
|
||||||
if (control)
|
if (control)
|
||||||
frame.right += 17;
|
frame.right += 17;
|
||||||
|
if (option)
|
||||||
|
frame.right += 17;
|
||||||
if (shift)
|
if (shift)
|
||||||
frame.right += 22;
|
frame.right += 22;
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,21 @@ const unsigned char kAltBits[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const unsigned char kOptBits[] = {
|
||||||
|
0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x14,
|
||||||
|
0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
|
||||||
|
0x1d,0x1a,0x1a,0x13,0x04,0x04,0x13,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
|
||||||
|
0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x04,0x1a,0x04,0x04,0x04,0x1a,0x17,0x14,
|
||||||
|
0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x17,0x14,
|
||||||
|
0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x04,0x1a,0x1a,0x04,0x1a,0x1a,0x17,0x14,
|
||||||
|
0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x17,0x14,
|
||||||
|
0x1d,0x1a,0x1a,0x13,0x04,0x04,0x13,0x1a,0x04,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x17,0x14,
|
||||||
|
0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
|
||||||
|
0x1d,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x14,
|
||||||
|
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
const unsigned char kShiftBits[] = {
|
const unsigned char kShiftBits[] = {
|
||||||
0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x14,
|
0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x14,
|
||||||
0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
|
0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
|
||||||
@@ -158,7 +173,6 @@ BMenuItem::BMenuItem(BMessage *data)
|
|||||||
|
|
||||||
if (data->HasMessage("_msg")) {
|
if (data->HasMessage("_msg")) {
|
||||||
BMessage *msg = new BMessage;
|
BMessage *msg = new BMessage;
|
||||||
|
|
||||||
data->FindMessage("_msg", msg);
|
data->FindMessage("_msg", msg);
|
||||||
SetMessage(msg);
|
SetMessage(msg);
|
||||||
}
|
}
|
||||||
@@ -213,7 +227,6 @@ BMenuItem::Archive(BMessage *data, bool deep) const
|
|||||||
|
|
||||||
if (ret == B_OK && deep && fSubmenu) {
|
if (ret == B_OK && deep && fSubmenu) {
|
||||||
BMessage submenu;
|
BMessage submenu;
|
||||||
|
|
||||||
if (fSubmenu->Archive(&submenu, true) == B_OK)
|
if (fSubmenu->Archive(&submenu, true) == B_OK)
|
||||||
ret = data->AddMessage("_submenu", &submenu);
|
ret = data->AddMessage("_submenu", &submenu);
|
||||||
}
|
}
|
||||||
@@ -803,6 +816,14 @@ BMenuItem::_DrawShortcutSymbol()
|
|||||||
fSuper->DrawBitmap(&control, where);
|
fSuper->DrawBitmap(&control, where);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fModifiers & B_OPTION_KEY) {
|
||||||
|
BRect rect(0,0,16,10);
|
||||||
|
BBitmap option(rect, B_CMAP8);
|
||||||
|
option.ImportBits(kOptBits, sizeof(kOptBits), 17, 0, B_CMAP8);
|
||||||
|
where.x -= rect.Width() + 1;
|
||||||
|
fSuper->DrawBitmap(&option, where);
|
||||||
|
}
|
||||||
|
|
||||||
if (fModifiers & B_SHIFT_KEY) {
|
if (fModifiers & B_SHIFT_KEY) {
|
||||||
BRect rect(0,0,21,10);
|
BRect rect(0,0,21,10);
|
||||||
BBitmap shift(rect, B_CMAP8);
|
BBitmap shift(rect, B_CMAP8);
|
||||||
|
|||||||
Reference in New Issue
Block a user