Menu item focus order in VoiceOver

Hi, when a PopupMenu is too large to fit in a single column, the navigation order with VoiceOver is line by line (all items of first line, then all items of second line etc) instead of column by column (first item of first column, then second item of first column, etc…).

In order to fix that I suggest to add an explicit focus order when building the juce::MenuWindow constructor:

            if (i + 1 < menu.items.size() || ! item.isSeparator)
                 auto* child = items.add (new ItemComponent (item, options, *this));
+               child->setExplicitFocusOrder(1000+i);
                 if (initialSelectedId != 0 && item.itemID == initialSelectedId)
                     setCurrentlyHighlightedChild (child);
1 Like

Thank you for reporting this. A fix has been released on develop

1 Like