VoiceOver announce incorrect number of child for a submenu of JPopupMenu when 
it is visible for the first time only. After that VO is able to announce the 
number of items correctly.

Issue: Problem is with the a11y subsystem method call to get the accessible 
children details.

Analysis: When the Submenu of a JPopupMenu is opened, accessible component of 
PopupMenu is created dynamically in the native side implementation and 
`PostMenuOpened` notification is sent to the a11y subsystem for the newly 
created PopupMenu. Once the notification is sent to a11y sub-system, it invokes 
the `accessibilityChildren` method to get the children details for the menu 
component. A11y subsystem always retrieve the information of the root level 
PopupMenu irrespective of the submenu's PopupMenu (PopupMenu is associated with 
each JMenu) and thus announce the root level PopupMenu child count which is 
incorrect.

Proposed Fix: Proposed fix is to ensure the correct child details are sent back 
to a11y sub-system for correct announcement. So, whenever the 
`accessibilityChildren` method is invoked, first try to find out the current 
accessible PopupMenu which is opened for the Submenu and then return the child 
details.

Testing : Manual test case is attached to verify the fix and there is no 
failure with fix in CI pipeline.

`Current fix also ensures the correct child counts are announced for the 
JMenu's Submenu which are present in the JMenubar.`

**Note :** While verifying the fix, a new issue is unearthed for multi-level 
submenu where VO is failed to announce the Submenu's text. Since the issue 
exists without the proposed fix too, it shall be treated as a new bug finding 
and will raise a separate JBS issue.

-------------

Commit messages:
 - Popupmenu child count fix

Changes: https://git.openjdk.org/jdk/pull/25470/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=25470&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8341311
  Stats: 178 lines in 3 files changed: 176 ins; 0 del; 2 mod
  Patch: https://git.openjdk.org/jdk/pull/25470.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/25470/head:pull/25470

PR: https://git.openjdk.org/jdk/pull/25470

Reply via email to