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

Alexander Scherbatiy alexandr.scherbatiy at oracle.com
Fri Jun 21 13:06:08 UTC 2013


  The fix looks good for me.

   Thanks,
   Alexandr.

On 6/21/2013 4:59 PM, anton nashatyrev wrote:
> 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