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