Added more to the checks to prevent any sort of painting assertion
errors.

2006-02-09  Lillian Angel  <[EMAIL PROTECTED]>

        * gnu/java/awt/peer/gtk/GtkComponentPeer.java
        (handleEvent): Added more to check to prevent assertion errors.
        * gnu/java/awt/peer/gtk/GtkPanelPeer.java
        (handleEvent): Likewise.
        * gnu/java/awt/peer/gtk/GtkWindowPeer.java
        (handleEvent): Likewise.

On Thu, 2006-02-09 at 10:43 -0500, Lillian Angel wrote:
> 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/GtkComponentPeer.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/GtkComponentPeer.java,v
retrieving revision 1.100
diff -u -r1.100 GtkComponentPeer.java
--- gnu/java/awt/peer/gtk/GtkComponentPeer.java	8 Feb 2006 14:35:10 -0000	1.100
+++ gnu/java/awt/peer/gtk/GtkComponentPeer.java	9 Feb 2006 17:41:38 -0000
@@ -308,13 +308,10 @@
           {
             Graphics g = getGraphics();
 
-            if (awtComponent.getWidth() < 1 || awtComponent.getHeight() < 1)
+            if (!awtComponent.isShowing()  || awtComponent.getWidth() < 1 
+                || awtComponent.getHeight() < 1 || g == null)
               break; 
 
-            // Some peers like GtkFileDialogPeer are repainted by Gtk itself
-            if (g == null)
-              break;
-
             g.setClip(((PaintEvent) event).getUpdateRect());
 
             if (id == PaintEvent.PAINT)
Index: gnu/java/awt/peer/gtk/GtkPanelPeer.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/GtkPanelPeer.java,v
retrieving revision 1.20
diff -u -r1.20 GtkPanelPeer.java
--- gnu/java/awt/peer/gtk/GtkPanelPeer.java	9 Feb 2006 15:41:35 -0000	1.20
+++ gnu/java/awt/peer/gtk/GtkPanelPeer.java	9 Feb 2006 17:41:38 -0000
@@ -41,6 +41,7 @@
 import java.awt.AWTEvent;
 import java.awt.Graphics;
 import java.awt.Panel;
+import java.awt.event.ComponentEvent;
 import java.awt.event.MouseEvent;
 import java.awt.event.PaintEvent;
 import java.awt.peer.PanelPeer;
@@ -67,13 +68,18 @@
       }
     
     if (event.getID() == PaintEvent.UPDATE)
-      {
+      {        
         Graphics g = getGraphics();
-        if (!awtComponent.isShowing() || g == null)
+        if (!awtComponent.isShowing() || awtComponent.getWidth() < 1 
+            || awtComponent.getHeight() < 1 || g == null)
           return;
         
+        g.setClip(((PaintEvent) event).getUpdateRect());
+        
         // Do not want to clear anything before painting.
         awtComponent.paint(g);
+        
+        g.dispose();
       }
     else
       super.handleEvent (event);
Index: gnu/java/awt/peer/gtk/GtkWindowPeer.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/GtkWindowPeer.java,v
retrieving revision 1.43
diff -u -r1.43 GtkWindowPeer.java
--- gnu/java/awt/peer/gtk/GtkWindowPeer.java	9 Feb 2006 15:41:35 -0000	1.43
+++ gnu/java/awt/peer/gtk/GtkWindowPeer.java	9 Feb 2006 17:41:38 -0000
@@ -244,11 +244,16 @@
     if (event.getID() == PaintEvent.UPDATE)
       {
         Graphics g = getGraphics();
-        if (!awtComponent.isShowing() || g == null)
+        if (!awtComponent.isShowing() || awtComponent.getWidth() < 1 
+            || awtComponent.getHeight() < 1 || g == null)
           return;
         
+        g.setClip(((PaintEvent) event).getUpdateRect());
+        
         // Do not want to clear anything before painting.
         awtComponent.paint(g);
+        
+        g.dispose();
       }
     else
       super.handleEvent(event);

Reply via email to