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.

Reply via email to