void MenuBarComponent::showMenu (int index) { if (index != currentPopupIndex) { PopupMenu::dismissAllActiveMenus(); menuBarItemsChanged (nullptr); setOpenItem (index); setItemUnderMouse (index); if (index >= 0) { PopupMenu m (model->getMenuForIndex (itemUnderMouse, menuNames [itemUnderMouse])); if (m.lookAndFeel == nullptr) m.setLookAndFeel (&getLookAndFeel()); const Rectangle<int> itemPos (xPositions [index], 0, xPositions [index + 1] - xPositions [index], getHeight()); m.showMenuAsync (PopupMenu::Options().withTargetComponent (this) .withTargetScreenArea (localAreaToGlobal (itemPos)) .withMinimumWidth (itemPos.getWidth()), ModalCallbackFunction::forComponent (menuBarMenuDismissedCallback, this, index)); } } }
void MenuBarComponent::menuCommandInvoked (MenuBarModel* /*menuBarModel*/, const ApplicationCommandTarget::InvocationInfo& info) { if (model == nullptr || (info.commandFlags & ApplicationCommandInfo::dontTriggerVisualFeedback) != 0) return; for (int i = 0; i < menuNames.size(); ++i) { const PopupMenu menu (model->getMenuForIndex (i, menuNames [i])); if (menu.containsCommandItem (info.commandID)) { setItemUnderMouse (i); startTimer (200); break; } } }
void MenuBarComponent::updateItemUnderMouse (const Point<int>& p) { setItemUnderMouse (getItemAt (p)); }
void MenuBarComponent::updateItemUnderMouse (int x, int y) { setItemUnderMouse (getItemAt (x, y)); }