<Swing Dev> [9] Review request for 8163167: [PIT] javax/swing/JTextArea/ScrollbarFlicker/ScrollFlickerTest.java always fail

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Tue Aug 23 18:29:24 UTC 2016


On 23.08.16 20:57, Semyon Sadetsky wrote:
>>>> Just to clarify, on what L&f the bug is reproduced? Why we call the
>>>> listener 6 times when we set the size of scroll only once?
>>>> I tried to print the bounds of the viewport in the listener and it
>>>> seems that they are the same most of the time:
>>>> bounds = java.awt.Rectangle[x=2,y=2,width=15,height=46]
>>>> bounds = java.awt.Rectangle[x=2,y=2,width=15,height=46]
>>>> bounds = java.awt.Rectangle[x=2,y=2,width=0,height=46]
>>>> bounds = java.awt.Rectangle[x=2,y=2,width=0,height=46]
>>>> bounds = java.awt.Rectangle[x=2,y=2,width=0,height=46]
>>>> bounds = java.awt.Rectangle[x=2,y=2,width=0,height=46]
>>>>
>>>> So probably it is possible to minimize the number of calls?
>>> This is expected behavior. It is because JScrollPane consists of several
>>> areas which may report changes each time they got a size.
>>
>> But in some cases the size is the same, for example in the text above
>> notification occurred twice for [x=2,y=2,width=15,height=46].
> This is how the internal JScrollPane layout algorithm works. It is most
> optimal way to layout the viewport, the text inside it along with the
> scroll bars. It requires several iterations usually.

Yes, we can validate/revalidate do some other stuff internally, but it 
is unclear why we call the listener when actually nothing was changed 
from the user point of view(bounds are the same). I see that in the code 
we have some check to block such noop notifications, but probably in 
some cases they are missed?

>>>>
>>>> On 23.08.16 11:59, Alexander Scherbatiy wrote:
>>>>> The fix looks good to me.
>>>>>
>>>>> Thanks,
>>>>> Alexandr.
>>>>>
>>>>> On 23/08/16 11:40, Semyon Sadetsky wrote:
>>>>>> Hello,
>>>>>>
>>>>>> Please review fix for JDK9:
>>>>>>
>>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8163167
>>>>>>
>>>>>> webrev: http://cr.openjdk.java.net/~ssadetsky/8163167/webrev.00/
>>>>>>
>>>>>> The cause of this test bug is revalidating JScrollPane layout may
>>>>>> take
>>>>>> various number of iterations on different L&Fs.
>>>>>>
>>>>>> To fix the test the counter listener is added after the layout
>>>>>> revalidation has been started.
>>>>>>
>>>>>> --Semyon
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
>


-- 
Best regards, Sergey.



More information about the swing-dev mailing list