Make logic menu field more font dynamic, wasn't working for Japanese

Some style fixes and code simplications too.
This commit is contained in:
John Scipione
2013-04-28 23:44:09 -04:00
parent e001e604b9
commit 2db4f1832a
+14 -17
View File
@@ -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);
} }