<Swing Dev> [9] Review Request: 8176448 [macos] Popups in JCombobox and Choice have incorrect location in multiscreen systems
Alexander Zvegintsev
alexander.zvegintsev at oracle.com
Wed Mar 15 14:30:10 UTC 2017
+1
Thanks,
Alexander.
On 15/03/2017 15:33, Alexandr Scherbatiy wrote:
>
> The fix looks good to me.
>
> Thanks,
> Alexandr.
>
> On 3/14/2017 6:12 PM, Sergey Bylokhov wrote:
>> Hello,
>> Please review the fix for jdk9.
>> In the fixes for JDK-7072653 [1] and JDK-8129838 [2] and JDK-8144161[3]
>>
>> [1] http://hg.openjdk.java.net/jdk9/jdk9/jdk/rev/7606d0af7b80
>>
>> Notes about JDK-7072653
>> - AquaComboBoxPopup.java the code "if (py + ph > scrBounds.y +
>> scrBounds.height)» compares the vars in a different coordinate
>> spaces(combobox vs screen). It is ok in BasicComboPopup.java because
>> we translate scrBounds properly.
>> - In Aqua the code was changed for the case when
>> "JComboBox.isPopDown» property is false, I will create a separate CR
>> to fix it when the property is true.
>>
>> [2] http://hg.openjdk.java.net/jdk9/jdk9/jdk/rev/5ea7cbf6a7bd
>>
>> Notes about JDK-8129838
>> - AquaComboBoxPopup.java the second loop was changed to use
>> "intersects" and "contains" at the same time, but if the point is
>> located on the screen it will be found in the first loop, but if it
>> was not found the second loop will be noop.
>> - Some code was extracted to the new method
>> getAvailableScreenArea(), but it was copied from the place where the
>> only one screen was available, so it uses «0» as a left point and
>> does not take into account that the screen can have non-zero offset.
>>
>> [3] hg.openjdk.java.net/jdk9/jdk9/jdk/rev/e8e9c65def6d
>> <http://hg.openjdk.java.net/jdk9/jdk9/jdk/rev/e8e9c65def6d>
>>
>> Notes about JDK-8144161:
>> - After JDK-7072653 [1] and JDK-8129838 were pushed the test which
>> was pushed started to fail on OS X, and this was considered as a
>> testbug, even if the code in Aqua l&f was changed to support this
>> functionality.
>> - The test was changed to use a different look and feels, but since
>> it run the test code a few times it start to work incorrectly,
>> because JFrame.getWindows() can return popup window from the
>> different L&F.(dispose was called on it but it was not garbage
>> collected).
>>
>> Fix description:
>> - An additional check in the second loop in AquaComboBoxPopup.java
>> was removed.
>> - AquaComboBoxPopup.getAvailableScreenArea now takes into account
>> that we can have a few screens.
>> - AquaComboBoxPopup.computePopupBounds() was changed to take into
>> account that scrBounds is in the screen coordinates space.
>> - The test bug7072653.java now check all screen in the system.
>> - Note that the new test ChoicePopupLocation.java will fail on
>> linux in multiscreen because of JDK-8160270. I will fix it after this
>> one.
>>
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8176448
>> Webrev can be found at:
>> http://cr.openjdk.java.net/~serb/8176448/webrev.04/
>> <http://cr.openjdk.java.net/%7Eserb/8176448/webrev.04/>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/swing-dev/attachments/20170315/f5ff2235/attachment.html>
More information about the swing-dev
mailing list