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);