<Swing Dev> [9] Review Request for 7072653: JComboBox popup mispositioned if its height exceeds the screen height
Semyon Sadetsky
semyon.sadetsky at oracle.com
Mon Apr 27 16:43:09 UTC 2015
On 4/27/2015 4:58 PM, Alexander Scherbatiy wrote:
> On 4/23/2015 2:02 PM, Semyon Sadetsky wrote:
>> Updated fix: http://cr.openjdk.java.net/~ssadetsky/7072653/webrev.02/
>>
>> (Aqua LnF had own logic need to be fixed as well as it was noticed by
>> Alexander Z.)
>>
>> Alexander,
>>
>> This is because the screenBounds are in relative coordinates and we
>> need to check if there are enough space to show popup above the combo.
> The screenBoundsare created in two ways: gc.getBounds() and new
> Rectangle(p, toolkit.getScreenSize()).
>
> The javadoc for the getBounds() claims: "In a multi-screen
> environment with a virtual device, the bounds can have negative X or Y
> origins."
> Does your solution work both for the positive and negative Y value?
>
> Thanks,
> Alexandr.
Yes, it now works for muli-monitor env. I specially pointed that in the
description.
Did you find any issues?
--Semyon
>
>>
>> --Semyon
>>
>> On 4/22/2015 2:33 PM, Alexander Scherbatiy wrote:
>>> On 4/21/2015 5:31 PM, Semyon Sadetsky wrote:
>>>> Hi Alexander,
>>>>
>>>> Thanks for the review.
>>>> The updated webrev:
>>>> http://cr.openjdk.java.net/~ssadetsky/7072653/webrev.01/
>>>
>>> 1299 if (py + ph > screenBounds.y + screenBounds.height) {
>>> 1300 if (ph <= -screenBounds.y - borderHeight) {
>>>
>>>
>>> Is it correct to compare the popup height with the screenBounds.y
>>> on the line 1300?
>>>
>>> Thanks,
>>> Alexandr.
>>>
>>>>
>>>> --Semyon
>>>>
>>>>
>>>> On 4/21/2015 5:17 PM, Alexander Zvegintsev wrote:
>>>>> Hello Semyon,
>>>>>
>>>>> it looks like that second call to getBorder() is unnecessary, we
>>>>> already have its result in popupBorder variable.
>>>>> borderHeight looks strange to me, it is initialized with left and
>>>>> right insets(related to width) and then used as height.
>>>>>
>>>>> The test uses full screen bounds and does not subtracts screen
>>>>> insets.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Alexander.
>>>>>
>>>>> On 04/16/2015 04:14 PM, Semyon Sadetsky wrote:
>>>>>> Subject corrected.
>>>>>>
>>>>>> On 4/16/2015 3:55 PM, Semyon Sadetsky wrote:
>>>>>>> Hello,
>>>>>>>
>>>>>>> Please review fix for JDK9:
>>>>>>>
>>>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-7072653
>>>>>>> webrev: http://cr.openjdk.java.net/~ssadetsky/7072653/webrev.00/
>>>>>>>
>>>>>>> *THE ROOT CAUSE
>>>>>>> Incorrect bounds calculation of heavy weight popup window in the
>>>>>>> BasicComboPopup when the requested popup menu height exceeds
>>>>>>> screen height.
>>>>>>> Additional issue found: popup border thickness is not taken into
>>>>>>> account when popup direction switched to up as the result popup
>>>>>>> overlaps its combo-box by 2 pixels.
>>>>>>> Also in multi-monitor desktop if screen are arranged vertically
>>>>>>> popup can be shown on another monitor.
>>>>>>>
>>>>>>> *SOLUTION
>>>>>>> The popup location algorithm is corrected to take into account
>>>>>>> the current screen height and border insets.
>>>>>>>
>>>>>>> *TESTING
>>>>>>> Test is added to ensure popup window height when combo-box
>>>>>>> contains 1000 items.
>>>>>>>
>>>>>>> --Semyon
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
More information about the swing-dev
mailing list