|
@@ -4,18 +4,25 @@ namespace rack { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void MenuItem::draw(NVGcontext *vg) { |
|
|
void MenuItem::draw(NVGcontext *vg) { |
|
|
// Get state |
|
|
|
|
|
BNDwidgetState state = (context()->event->hoveredWidget == this) ? BND_HOVER : BND_DEFAULT; |
|
|
|
|
|
|
|
|
BNDwidgetState state = BND_DEFAULT; |
|
|
|
|
|
|
|
|
|
|
|
if (context()->event->hoveredWidget == this) |
|
|
|
|
|
state = BND_HOVER; |
|
|
|
|
|
|
|
|
// Set active state if this MenuItem |
|
|
// Set active state if this MenuItem |
|
|
Menu *parentMenu = dynamic_cast<Menu*>(parent); |
|
|
Menu *parentMenu = dynamic_cast<Menu*>(parent); |
|
|
if (parentMenu && parentMenu->activeEntry == this) { |
|
|
|
|
|
|
|
|
if (parentMenu && parentMenu->activeEntry == this) |
|
|
state = BND_ACTIVE; |
|
|
state = BND_ACTIVE; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bndMenuItem(vg, 0.0, 0.0, box.size.x, box.size.y, state, -1, text.c_str()); |
|
|
|
|
|
|
|
|
// Main text and background |
|
|
|
|
|
if (!disabled) |
|
|
|
|
|
bndMenuItem(vg, 0.0, 0.0, box.size.x, box.size.y, state, -1, text.c_str()); |
|
|
|
|
|
else |
|
|
|
|
|
bndMenuLabel(vg, 0.0, 0.0, box.size.x, box.size.y, -1, text.c_str()); |
|
|
|
|
|
|
|
|
|
|
|
// Right text |
|
|
float x = box.size.x - bndLabelWidth(vg, -1, rightText.c_str()); |
|
|
float x = box.size.x - bndLabelWidth(vg, -1, rightText.c_str()); |
|
|
NVGcolor rightColor = (state == BND_DEFAULT) ? bndGetTheme()->menuTheme.textColor : bndGetTheme()->menuTheme.textSelectedColor; |
|
|
|
|
|
|
|
|
NVGcolor rightColor = (state == BND_DEFAULT && !disabled) ? bndGetTheme()->menuTheme.textColor : bndGetTheme()->menuTheme.textSelectedColor; |
|
|
bndIconLabelValue(vg, x, 0.0, box.size.x, box.size.y, -1, rightColor, BND_LEFT, BND_LABEL_FONT_SIZE, rightText.c_str(), NULL); |
|
|
bndIconLabelValue(vg, x, 0.0, box.size.x, box.size.y, -1, rightColor, BND_LEFT, BND_LABEL_FONT_SIZE, rightText.c_str(), NULL); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|