|
@@ -12,31 +12,36 @@ float MenuItem::computeMinWidth(NVGcontext *vg) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void MenuItem::draw(NVGcontext *vg) { |
|
|
void MenuItem::draw(NVGcontext *vg) { |
|
|
|
|
|
// Get state |
|
|
|
|
|
BNDwidgetState state = (gHoveredWidget == this) ? BND_HOVER : BND_DEFAULT; |
|
|
|
|
|
Menu *parentMenu = dynamic_cast<Menu*>(parent); |
|
|
|
|
|
if (parentMenu && parentMenu->activeEntry == this) { |
|
|
|
|
|
state = BND_ACTIVE; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
bndMenuItem(vg, 0.0, 0.0, box.size.x, box.size.y, state, -1, text.c_str()); |
|
|
bndMenuItem(vg, 0.0, 0.0, box.size.x, box.size.y, state, -1, text.c_str()); |
|
|
|
|
|
|
|
|
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) ? 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); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void MenuItem::onMouseEnter() { |
|
|
void MenuItem::onMouseEnter() { |
|
|
state = BND_HOVER; |
|
|
|
|
|
|
|
|
Menu *parentMenu = dynamic_cast<Menu*>(parent); |
|
|
|
|
|
if (!parentMenu) |
|
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
|
|
parentMenu->activeEntry = NULL; |
|
|
|
|
|
|
|
|
// Try to create child menu |
|
|
// Try to create child menu |
|
|
Menu *childMenu = createChildMenu(); |
|
|
Menu *childMenu = createChildMenu(); |
|
|
if (childMenu) { |
|
|
if (childMenu) { |
|
|
childMenu->box.pos = parent->box.pos.plus(box.getTopRight()); |
|
|
childMenu->box.pos = parent->box.pos.plus(box.getTopRight()); |
|
|
Menu *parentMenu = dynamic_cast<Menu*>(parent); |
|
|
|
|
|
assert(parentMenu); |
|
|
|
|
|
parentMenu->setChildMenu(childMenu); |
|
|
parentMenu->setChildMenu(childMenu); |
|
|
|
|
|
parentMenu->activeEntry = this; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void MenuItem::onMouseLeave() { |
|
|
|
|
|
state = BND_DEFAULT; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void MenuItem::onDragDrop(Widget *origin) { |
|
|
void MenuItem::onDragDrop(Widget *origin) { |
|
|
if (origin != this) |
|
|
if (origin != this) |
|
|
return; |
|
|
return; |
|
|