<Swing Dev> [7] Review request for 7123767 Wrong tooltip location in Multi-Monitor configurations

Vladislav Karnaukhov Vladislav.Karnaukhov at oracle.com
Mon Jul 30 13:46:37 UTC 2012


Hello,

please review the fix for 7123767: Wrong tooltip location in 
Multi-Monitor configurations

jdk7 webrev: http://cr.openjdk.java.net/~vkarnauk/7123767/webrev.00/
test source: http://cr.openjdk.java.net/~vkarnauk/7123767/test/
bug description: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7123767

This is also a customer escalated issue in jdk6.

On multi-monitor configurations Component.getLocationOnScreen() may 
return negative values. Additionally, ToolTipManager.showTipWindow() 
method calculates tip window location from Component' 
getLocationOnScreen() return data and draws tip window using the same 
GraphicsConfiguration instance as component's top-left corner, which 
again can be of negative value. When component is stretched across 
multiple screen devices, this may lead to a situation when it's tooltip 
is drawn on wrong monitor.

To fix this we should count all GraphicsConfiguration instances and 
determine correct screen device to draw on. We should also take into 
account that:
1) tip window preferred location could be set
2) preferred location could be greater than total virtual bounds of all 
monitors. To make tip window visible in such case we move it to the 
corresponding corner of total virtual bounds
3) exact order of monitors (left-to-right and top-to-bottom) is unknown

I run jtreg against ToolTipManager tests and all tests passed (I run it 
several times with different monitor configurations). I also tested the 
fix with custom test program (please see the link provided) with 4 
possible monitor configurations (left-to-right, right-to-left, 
top-to-bottom and bottom-to-top) and saw no issues.

I added no new automated test(s) because this at least would require 
multiple monitors to run.

Regards,
- Vlad



More information about the swing-dev mailing list