Many test cases I have, show that Sun does not call update(Graphics) on
Panels or Windows. Only paint(Graphics) is called. Many widgets were
being cleared and not repainted properly when update was called.
2006-02-09 Lillian Angel <[EMAIL PROTECTED]>
* gnu/java/awt/peer/gtk/GtkPanelPeer.java
(handleEvent): Added code to handle PaintEvent.UPDATE.
Sun does not call update(Graphics g) on Panels.
* gnu/java/awt/peer/gtk/GtkWindowPeer.java
(handleEvent): New method. Added code to handle
PaintEvent.UPDATE. Sun does not call update(Graphics g) on
Panels.
Index: gnu/java/awt/peer/gtk/GtkPanelPeer.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/GtkPanelPeer.java,v
retrieving revision 1.19
diff -u -r1.19 GtkPanelPeer.java
--- gnu/java/awt/peer/gtk/GtkPanelPeer.java 2 Jul 2005 20:32:12 -0000 1.19
+++ gnu/java/awt/peer/gtk/GtkPanelPeer.java 9 Feb 2006 15:38:29 -0000
@@ -39,8 +39,10 @@
package gnu.java.awt.peer.gtk;
import java.awt.AWTEvent;
+import java.awt.Graphics;
import java.awt.Panel;
import java.awt.event.MouseEvent;
+import java.awt.event.PaintEvent;
import java.awt.peer.PanelPeer;
public class GtkPanelPeer extends GtkContainerPeer
@@ -63,7 +65,18 @@
awtComponent.requestFocusInWindow ();
break;
}
- super.handleEvent (event);
+
+ if (event.getID() == PaintEvent.UPDATE)
+ {
+ Graphics g = getGraphics();
+ if (!awtComponent.isShowing() || g == null)
+ return;
+
+ // Do not want to clear anything before painting.
+ awtComponent.paint(g);
+ }
+ else
+ super.handleEvent (event);
}
native void connectSignals ();
Index: gnu/java/awt/peer/gtk/GtkWindowPeer.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/GtkWindowPeer.java,v
retrieving revision 1.42
diff -u -r1.42 GtkWindowPeer.java
--- gnu/java/awt/peer/gtk/GtkWindowPeer.java 16 Nov 2005 15:58:05 -0000 1.42
+++ gnu/java/awt/peer/gtk/GtkWindowPeer.java 9 Feb 2006 15:38:29 -0000
@@ -38,9 +38,12 @@
package gnu.java.awt.peer.gtk;
+import java.awt.AWTEvent;
import java.awt.Component;
import java.awt.Frame;
+import java.awt.Graphics;
import java.awt.Window;
+import java.awt.event.PaintEvent;
import java.awt.event.WindowEvent;
import java.awt.peer.WindowPeer;
@@ -235,4 +238,19 @@
// TODO Auto-generated method stub
return false;
}
+
+ public void handleEvent(AWTEvent event)
+ {
+ if (event.getID() == PaintEvent.UPDATE)
+ {
+ Graphics g = getGraphics();
+ if (!awtComponent.isShowing() || g == null)
+ return;
+
+ // Do not want to clear anything before painting.
+ awtComponent.paint(g);
+ }
+ else
+ super.handleEvent(event);
+ }
}