Hi, Jonathan,
It`s strange to me that the component size depends on the sequence of
paint events and I`ve looked deeper. And I`ve found that the main
problem is that XLabelPeer updates its caches (cachedFontMetrics and
oldfont) in the paintPeer(). So when we postpone the paint,
frame.pack()->...->getMinimumSize() uses old caches and when we paint in
a place, getMinimumSize() uses correct values.
22.05.2012 18:23, Sergey Bylokhov wrote:
Hi, Jonathan,
Looks like this bug is duplicate of
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7161865
And the reason of the issue is that we post UpdateEvent in
target.repaint() in XLabelPeer.setFont(), but we should paint native
part of the component in place[1] and then post PaintEvent[2].
- To fix [1] we can replace target.repaint() to repaint() in
setFont(). Does it solve your issue?
22.05.2012 11:47, Jonathan Lu wrote:
Hi awt-dev,
Here's a patch for bug 7170655, could anybody please help to take a
look?
http://cr.openjdk.java.net/~luchsh/7170655/
The problem is that painting event from EDT during painting handling
does not get processed immediately, so leave a lag to the user. My
solution here is to coalesce and dispatch the new paint event right
after it was posted. This happens only to AWT components.
Thanks!
-Jonathan
--
Best regards, Sergey.