<Swing Dev> [9] Review Request for 7072653: JComboBox popup mispositioned if its height exceeds the screen height
Alexander Scherbatiy
alexandr.scherbatiy at oracle.com
Mon Apr 27 13:58:50 UTC 2015
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.
>
> --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