<AWT Dev> Review Request for 8055197: TextField deletes multiline strings

Ambarish Rapte ambarish.rapte at oracle.com
Thu Oct 29 14:28:46 UTC 2015


Hi Sergey,

	The webrev is updated with using System.lineSeparator() instead of System.getProperty("line.separator").

	Webrev: http://cr.openjdk.java.net/~rchamyal/ambarish/8055197/webrev.01/

	Reason for using array:
		System.lineSeparator()  differs platform wise.
		Windows: \r\n
		Linux: \n
		Mac: \r

		But '\n' is a generic new line character, which programmers can add manually in string as,  "Row1 \n Row2"
		To handle this case, have added it in array.
		There is also a bug reported for this case,
		https://bugs.openjdk.java.net/browse/JDK-7186036 : TextField class does not show text after CR on Windows

		Similarly '\r' can also be considered,
		but '\r' is not commonly used &
		Also presence of '\r' in string does not result in truncation of text.


Many Thanks,
Ambarish

-----Original Message-----
From: Sergey Bylokhov 
Sent: Thursday, October 29, 2015 12:20 AM
To: Ambarish Rapte; awt-dev at openjdk.java.net; Alexander Scherbatiy
Subject: Re: Review Request for 8055197: TextField deletes multiline strings

Hi, Ambarish.
What is the reason to use this array? 
{System.getProperty("line.separator"), "\n"} Why we cannot use only the System.getProperty("line.separator") or which is simpler the System.lineSeparator();

On 14.10.15 19:44, Ambarish Rapte wrote:
> Dear All,
>
>      Please review the patch for jdk9.
>      Bug: https://bugs.openjdk.java.net/browse/JDK-8055197
>      Webrev: 
> http://cr.openjdk.java.net/~rchamyal/ambarish/8055197/webrev.00/
>
>
> Issue:
>      - If text containing new line character is set to TextField, Text after new line character was terminated.
>      - Issue occurs only on windows.
>
> Cause:
>      - For windows new line character is   ‘\r\n’.
>      - For windows code this new line character was not replaced by space character.
>      - Other platforms replace the EOL character by space character.
>
> Fix:
>      - Added code to TextComponent.java to remove EOL on java side before passing to peer.
>        => Added a private method replaceEOL() , which replaces EOL by space.
>        => removeEOL will be called by newly added TextComponent 
> construcotr and setText()
>
>      - The text variable on in TextComponent.java & on string displayed on native side will be same.
>
>
>
> Many Thanks,
> Ambarish
>


--
Best regards, Sergey.


More information about the awt-dev mailing list