<Swing Dev> [8] Review request for 8016833: Underlines and strikethrough not rendering correctly
Alexander Scherbatiy
alexandr.scherbatiy at oracle.com
Fri Jun 21 11:16:55 UTC 2013
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