<Swing Dev> [10] RFR JDK-8187957:Tab Size does not work correctly in JTextArea

Semyon Sadetsky semyon.sadetsky at oracle.com
Wed Nov 8 18:39:28 UTC 2017


Hi Sergey,

It also may be written as

      int ntabs = (int)((x - tabBase) / tabSize);
      return tabBase + (ntabs + 1) * tabSize

See my previous comment.

--Semyon


On 11/08/2017 10:24 AM, Sergey Bylokhov wrote:
> Hi, Prasanta.
> Is it possible that dropping the float part of "tabSize" and "x" will 
> cause Off-by-one error? For example:
>     float tabSize=3.99f;
>     float x=21.9f;
>     int tabBase=0;
>  649         int ntabs = ((int) x - tabBase) / (int)tabSize;
>  650         return tabBase + ((ntabs + 1) * tabSize);
>
> The result is: ntabs=7 -> 31.92 which is not correct.
>
> I guess you will need something like this:
>     int ntabs = (int) Math.ceil((x - tabBase) / tabSize);
>     return tabBase + ntabs * tabSize;
> The result is: ntabs=6 -> 23.94
>
>
> On 08/11/2017 03:25, Prasanta Sadhukhan wrote:
>> Hi All,
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8187957
>> webrev: http://cr.openjdk.java.net/~psadhukhan/8187957/webrev.00/
>>
>> Please review a fix for an issue where it is seen string with "tab" 
>> in them are not aligned properly.
>> This is because while calculating tab stop postion, it is calculating 
>> number of tabs in float value (an aftereffect of JDK-8156217 
>> <https://bugs.openjdk.java.net/browse/JDK-8156217>)
>> so next tab stop location is coming out wrong.
>> Fix is to use "number of tabs" as an integer value in order to 
>> calculate the tab position correctly.
>>
>> Regards
>> Prasanta
>
>




More information about the swing-dev mailing list