<Swing Dev> [10] RFR JDK-7190581: Nimbus: PgDn at the bottom causes scrolling

Prasanta Sadhukhan prasanta.sadhukhan at oracle.com
Thu Jul 27 06:08:30 UTC 2017


OK. Here's the webrev with modified testcase

http://cr.openjdk.java.net/~psadhukhan/7190581/webrev.01/

Regards
Prasanta
On 7/26/2017 8:21 PM, Semyon Sadetsky wrote:
> Hi Prasanta,
>
> The bug was found on Nimbus L&F but the provided reg test doesn't run 
> on Nimbus.
>
> Can you modify the test to make it testing page scrolling on all 
> available L&Fs?
>
> --Semyon
>
>
> On 07/25/2017 11:52 PM, Prasanta Sadhukhan wrote:
>> Hi All,
>>
>> Please review a fix for an issue where it is seen that pressing "Page 
>> down" after "ctrl-END" in TextArea causes extra scroll down for 
>> Nimbus L&F.
>> ctrl-END is supposed to go the very end of the document and show the 
>> caret at the end, so any "page down" should not cause any further 
>> scroll down.
>>
>> This was happening because JTextArea uses 
>> DefaultEditorKit.VerticalPageAction() to execute pagedown/up and
>> due to container layout a bit different in different l&fs, in 
>> ViewportLayout.layoutContainer causes "viewSize" to be different as 
>> set in vp.setViewSize(viewSize);
>> So, the "initialY" view point as obtained from 
>> VerticalPageAction#target.getVisibleRect();   is different in Nimbus 
>> l&f as compared to say, Metal l&f.
>> When constrainY() is called to ascertain if "initialY" is valid, it 
>> calculates new Y again [using Math.max(0, target.getHeight() - vis);]
>> which causes "newVis.y" to be different so 
>> target.scrollRectToVisible(newVis); at the end with new visual y , 
>> causes scrolling.
>>
>> In other l&f like metal, initialY and newVis.y are same so no 
>> additional scrolling is seen.
>>
>> Proposed fix is to ensure if caret position [obtained from 
>> target.getCaretPosition()] is same as visible offset,
>> which means caret is at the end of the document when "page down" is 
>> pressed after ctrl-END
>> or
>> at the start when "page up" is pressed after ctrl-HOME
>> then correct the newVis.y to prevent additional scrolling.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-7190581
>> webrev: http://cr.openjdk.java.net/~psadhukhan/7190581/webrev.00/
>>
>> I have tested with Notepad demo which uses DefaultEditorKit with 
>> pageup/down actions and also other regression tests which uses 
>> DefaultEditorKit.
>>
>> Regards
>> Prasanta
>




More information about the swing-dev mailing list