Lightweight Components not repainting after recent Classpathmerge

Scott Gilbertson scottg@mantatest.com
Mon Feb 6 22:28:00 GMT 2006


> Roman wrote:
> Have you tried resyncing with the latest Classpath sources already?
> AFAIK, the latest merge is quite some time ago and I remember to have
> fixed a couple of repaint related issues in Classpath's AWT code. I
> tried the example of your previous email regarding AWT (the same as the
> attached program?) against Classpath and that seemed to work.
>
The last merge to the GCJ tree was January 17, 2006, using Classpath 0.20
I just had a look at java.awt.Component in the Classpath cvs browser
(revision 1.94, Feb 6, 2006).
It has:
 public void repaint(long tm, int x, int y, int width, int height)
 {
 if (isShowing())
 {
 ComponentPeer p = peer;
 if (p != null)
 p.repaint(tm, x, y, width, height);
 }
 }
That's the same as in GCJ. Since
gnu.java.awt.peer.GLightweightPeer.repaint is empty (also the same as in
GCJ), p.repaint doesn't do anything. So I don't see how the latest
Classpath code can do a repaint on a lightweight.
Earlier versions (1.86, Nov 8 2005, and earlier) of java.awt.Component
called the parent's repaint, which circumvented the problem, but I think
GLightweightPeer is the right place to do that.
I have modified GLightweightPeer in my local GCJ build to call the parent's
repaint, and it makes the test program work.


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /