Hi all,
I’ve come across a bug regarding how focus is passed into a PopupMenu when it is opened with macOS Voiceover - namely, if you use PopupMenu::Options’s .withParentComponent(<comp>) and do not use .withInitiallySelectedItem(), focus will not properly transfer into the `PopupMenu`.
I’m testing on macOS Tahoe 26.2, Apple Silicon. Note that in VoiceOver Utility, “Navigation” → “Mouse Pointer” shouId be set to “gnores VoiceOver cursor”. If it’s set to “Follows VoiceOver Cursor”, then focus sometimes works correctly, but not always.
Attached are two videos which illustrate the issue. I’ve updated the DSPModulePluginDemo, adding the following to the DspModulePluginDemoEditor and setting a CustomLaf member as the look and feel in the editor’s constructor. This is with the latest tip of develop.
class CustomLaf : public LookAndFeel_V4
{
PopupMenu::Options getOptionsForComboBoxPopupMenu (ComboBox& box, Label& label) override
{
return LookAndFeel_V4::getOptionsForComboBoxPopupMenu(box, label)
.withInitiallySelectedItem(0) // effectively turns off base behavior
.withParentComponent(box.findParentComponentOfClass<juce::AudioProcessorEditor>();
}
};
In this first video, you can see that after the PopupMenu opens, I cannot use VO+Up/Down to start navigating the menu entries. Even though I’m spamming it, just gets stuck:
In this second video, I updated to withInitiallySelectedItem(box.getSelectedId()), and you’ll see focus correctly transfers:
Also for what it’s worth, keeping withInitiallySelectedItem(0) and removing .withParentComponent(box.findParentComponentOfClass<juce::AudioProcessorEditor>();, it works fine:
Digging into the PopupMenu code with a debugger, it appears that MenuWindow::handleAsyncUpdate() and the AccessibilityActions for MenuWindow are getting called correctly when I use VO+Up/Down (calling setNextItem()), but it’s still not correctly moving the focus into the row components in the PopupMenu.
Any ideas? I need to use withParentComponent() but I can’t use withInitiallySelectedItem() for various reasons. Thanks!

