Hi Sergey,
I have run javax/swing/text jtreg and jck tests and did not observe any
regressions.
Regards
Prasanta
On 4/28/2018 5:38 AM, Sergey Bylokhov wrote:
Hi, Prasanta.
Please confirm that you run related jck/reg tests.
On 26/04/2018 23:52, Prasanta Sadhukhan wrote:
Hi All,
Please review a fix for an issue where it is seen that,
with a screen resolution higher than 100% and then clicking in a
JTextArea having setLineWrap(true) set, the caret (insertion point)
is not aligned with the cursor.
The issue seems to stem from the fact that caret position calculation
in DefaultCaret class utilises API that uses integer calculation than
floating point calculations.
The code flow as seen is
DefaultCaret#positionCaret=>BasicTextUI#viewToModel=>BoxView.viewToModel=>CompositeView#viewToModel=>WrappedPlainView#viewToModel=>Utilities.getTabbedOffset
Now, getTabbedOffset utilises FontMetrics.charsWidth() which uses
integer arithmetic to get the caret position.
The same getTabbedOffset uses Font.getStringBounds() which uses
floating point arithmetic via Rectangle2D.Float.
Proposed fix is to make sure getTabbedOffset uses floating point
calculations by using getStringBounds() instead of charsWidth() so
that it calculates
the character width(s) of text present in JTextArea in floating point
to align the caret.
Bug: https://bugs.openjdk.java.net/browse/JDK-8199441
webrev: http://cr.openjdk.java.net/~psadhukhan/8199441/webrev.00/
Regards
Prasanta