<Swing Dev> [8] Review request for 8016833: Underlines and strikethrough not rendering correctly

anton nashatyrev anton.nashatyrev at oracle.com
Fri Jun 21 12:59:16 UTC 2013


Alexander,

     here is the separate issue for background: 
bugs.sun.com/view_bug.do?bug_id=8017266

     fixed webrev is here: 
http://cr.openjdk.java.net/~vkarnauk/8016833/jdk8/webrev.01/

Thanks!
Anton.

On 21.06.2013 15:16, Alexander Scherbatiy wrote:
> On 6/21/2013 3:00 PM, anton nashatyrev wrote:
>> Hello, Alexander,
>>
>>     thanks for your suggestion, though I'm not sure drawing a 
>> background has the same semantics as drawing underline. The latter 
>> may be though of as a part of glyph while for background it is ok to 
>> 'highlight' the space _reserved_ for a View. Also the taller 
>> highlight is almost not visible to a user comparing to incorrectly 
>> painted underline.
>>     I'd prefer either not to fix this at all or at least not to 
>> include the fix to this customer issue.
>       It could be filled as a separate issue.
>>
>>     Had fixed the EDT issue in the test.
>    Could you send the updated webrev?
>
>    Thanks,
>    Alexandr.
>>
>> Thanks,
>> Anton.
>>
>> On 20.06.2013 18:57, Alexander Scherbatiy wrote:
>>> On 6/20/2013 2:41 PM, anton nashatyrev wrote:
>>>> Hello,
>>>>     could you please review the following fix:
>>>>
>>>> fix: http://cr.openjdk.java.net/~vkarnauk/8016833/jdk8/webrev.00/ 
>>>> <http://cr.openjdk.java.net/%7Evkarnauk/8016833/jdk8/webrev.00/>
>>>> bug: http://bugs.sun.com/view_bug.do?bug_id=8016833
>>>>
>>>     It seem that there is the same problem with the background color:
>>>         Style style = comp.addStyle("underlined superscript", null);
>>>         StyleConstants.setBackground(style, Color.BLUE);
>>>         ...
>>>             doc.insertString(doc.getLength(), "hello", style);
>>>
>>>     because paint(Graphics g, Shape a) method in GlyphView uses the 
>>> alloc.height in the same way.
>>>
>>>
>>>   Could invoke all Swing methods on EDT and remove the comments from 
>>> the test:
>>>
>>>  266 //        bug8016833 b = new bug8016833();
>>>  267 //        b.demo();
>>>
>>> Thanks,
>>>    Alexandr.
>>>
>>>> The reason of such behavior is that the superscripted GlyphView 
>>>> requested
>>>> increased vertical span, since the alignment of value 1.0
>>>> (GlyphView.getAligment(View.Y_AXIS) returns 1.0) isn't enough to 
>>>> paint it as
>>>> high as required.
>>>> (BTW, for subscripted text setting the alignment is enough)
>>>>
>>>> GlyphView.paintTextUsingColor() calculates the Y position of the 
>>>> underscore
>>>> as following:
>>>>
>>>>   int y = alloc.y + alloc.height - (int) painter.getDescent(this);
>>>>
>>>> but here alloc.height means the space _reserved_ for glyphs and not 
>>>> the
>>>> actual boundary of the painted text. To fix that we need to substitute
>>>> alloc.height with painter.getHeight(this).
>>>>
>>>> The fix looks safe since the GlyphView preferred vertical span is 
>>>> initially
>>>> requested from the GlyphPainter.
>>>>
>>>> Thanks!
>>>> Anton.
>>>
>>>
>>>
>>
>
>
>




More information about the swing-dev mailing list