Hello!

I'm a member of the UI team in JetBrains IntelliJ department, and we have this 
bug with popup menus being shown on the wrong monitor in multi-monitor 
environments:

https://youtrack.jetbrains.com/issue/JBR-5824/Dual-monitor-bug-on-the-context-menu

I managed to track it down to this JDK bug:

https://bugs.openjdk.org/browse/JDK-6415065

I've described the cause and the fix in the commit message, but in short, what 
happens here is that `JMenu.getPopupMenuOrigin` sometimes returns coordinates 
outside (usually above) of the current screen, and later 
`JPopupMenu.adjustPopupLocationToFitScreen` uses those coordinates to fit the 
entire popup menu into the screen, which goes wrong because at that point it's 
no longer known which screen the menu was initially invoked on.

I've fixed this by making sure the Y coordinate is still within the correct 
screen when it's returned from `JMenu.getPopupMenuOrigin`.

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

Commit messages:
 - 6415065: Submenu is shown on wrong screen in multiple monitor environment

Changes: https://git.openjdk.org/jdk/pull/15185/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=15185&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-6415065
  Stats: 17 lines in 1 file changed: 17 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/15185.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/15185/head:pull/15185

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

Reply via email to