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

Semyon Sadetsky semyon.sadetsky at oracle.com
Wed Jul 26 14:51:16 UTC 2017


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