Make logic menu field more font dynamic, wasn't working for Japanese
Some style fixes and code simplications too.
This commit is contained in:
@@ -933,46 +933,43 @@ FindPanel::ResizeMenuField(BMenuField* menuField)
|
|||||||
|
|
||||||
BMenu* menu = menuField->Menu();
|
BMenu* menu = menuField->Menu();
|
||||||
|
|
||||||
float padding = 0.0;
|
float padding = 0.0f;
|
||||||
float width = size.width;
|
float width = 0.0f;
|
||||||
|
|
||||||
BMenuItem* markedItem = menu->FindMarked();
|
BMenuItem* markedItem = menu->FindMarked();
|
||||||
if (markedItem != NULL) {
|
if (markedItem != NULL) {
|
||||||
if (markedItem->Submenu() != NULL) {
|
if (markedItem->Submenu() != NULL) {
|
||||||
BMenuItem* markedSubItem = markedItem->Submenu()->FindMarked();
|
BMenuItem* markedSubItem = markedItem->Submenu()->FindMarked();
|
||||||
if (markedSubItem != NULL && markedSubItem->Label() != NULL) {
|
if (markedSubItem != NULL && markedSubItem->Label() != NULL) {
|
||||||
float labelWidth = StringWidth(markedSubItem->Label());
|
float labelWidth
|
||||||
|
= menuField->StringWidth(markedSubItem->Label());
|
||||||
padding = size.width - labelWidth;
|
padding = size.width - labelWidth;
|
||||||
}
|
}
|
||||||
} else if (markedItem->Label() != NULL) {
|
} else if (markedItem->Label() != NULL) {
|
||||||
float labelWidth = StringWidth(markedItem->Label());
|
float labelWidth = menuField->StringWidth(markedItem->Label());
|
||||||
padding = size.width - labelWidth;
|
padding = size.width - labelWidth;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int32 index = menu->CountItems(); index-- > 0; ) {
|
for (int32 index = menu->CountItems(); index-- > 0; ) {
|
||||||
BMenuItem* item = menu->ItemAt(index);
|
BMenuItem* item = menu->ItemAt(index);
|
||||||
if (item->Label() != NULL) {
|
if (item->Label() != NULL)
|
||||||
float labelWidth = StringWidth(item->Label());
|
width = max(width, StringWidth(item->Label()));
|
||||||
if (labelWidth > width) {
|
|
||||||
width = labelWidth;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
BMenu* submenu = item->Submenu();
|
BMenu* submenu = item->Submenu();
|
||||||
if (submenu != NULL) {
|
if (submenu != NULL) {
|
||||||
for (int32 subIndex = submenu->CountItems(); subIndex-- > 0; ) {
|
for (int32 subIndex = submenu->CountItems(); subIndex-- > 0; ) {
|
||||||
BMenuItem* subItem = submenu->ItemAt(subIndex);
|
BMenuItem* subItem = submenu->ItemAt(subIndex);
|
||||||
if (subItem->Label() != NULL) {
|
if (subItem->Label() == NULL)
|
||||||
float labelWidth = StringWidth(subItem->Label());
|
continue;
|
||||||
if (labelWidth > width)
|
|
||||||
width = labelWidth;
|
width = max(width, menuField->StringWidth(subItem->Label()));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
size.width = width + padding;
|
size.width = width + padding;
|
||||||
menuField->SetExplicitMinSize(size);
|
menuField->SetExplicitSize(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -2696,7 +2693,7 @@ FindPanel::AddLogicMenu(int32 index, bool selectAnd)
|
|||||||
BMenuField* menufield = new BMenuField("Logic", "", menu, B_WILL_DRAW);
|
BMenuField* menufield = new BMenuField("Logic", "", menu, B_WILL_DRAW);
|
||||||
menufield->SetDivider(0.0f);
|
menufield->SetDivider(0.0f);
|
||||||
|
|
||||||
menufield->SetExplicitMaxSize(menufield->MinSize());
|
ResizeMenuField(menufield);
|
||||||
|
|
||||||
fAttrGrid->AddView(menufield, 3, index);
|
fAttrGrid->AddView(menufield, 3, index);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user