diff --git a/modules/juce_gui_basics/menus/juce_PopupMenu.cpp b/modules/juce_gui_basics/menus/juce_PopupMenu.cpp index 7055dc7646..f2be19d74d 100644 --- a/modules/juce_gui_basics/menus/juce_PopupMenu.cpp +++ b/modules/juce_gui_basics/menus/juce_PopupMenu.cpp @@ -424,23 +424,23 @@ struct MenuWindow final : public Component if (auto visibleID = options.getItemThatMustBeVisible()) { - for (auto* item : items) + const auto iter = std::find_if (items.begin(), items.end(), [&] (auto* item) { - if (item->item.itemID == visibleID) + return item->item.itemID == visibleID; + }); + + if (iter != items.end()) + { + const auto targetPosition = [&] { - const auto targetPosition = [&] - { - if (auto* pc = options.getParentComponent()) - return pc->getLocalPoint (nullptr, targetArea.getTopLeft()); + if (auto* pc = options.getParentComponent()) + return pc->getLocalPoint (nullptr, targetArea.getTopLeft()); - return targetArea.getTopLeft(); - }(); + return targetArea.getTopLeft(); + }(); - auto y = targetPosition.getY() - windowPos.getY(); - ensureItemComponentIsVisible (*item, isPositiveAndBelow (y, windowPos.getHeight()) ? y : -1); - - break; - } + auto y = targetPosition.getY() - windowPos.getY(); + ensureItemComponentIsVisible (**iter, isPositiveAndBelow (y, windowPos.getHeight()) ? y : -1); } }