With several test cases, I noticed that the selectedIndex of a Choice
box was not being updated. I added a function to take care of this.
I added some checks to GdkGraphics.drawImage to prevent NPEs.
2006-03-30 Lillian Angel <[EMAIL PROTECTED]>
* gnu/java/awt/peer/gtk/GdkGraphics.java
(drawImage): Added check to prevent NPE.
(drawImage): Likewise.
(drawImage): Likewise.
* java/awt/Choice.java
(dispatchEventImpl): New function. selectedIndex was
not being updated properly otherwise.
Index: gnu/java/awt/peer/gtk/GdkGraphics.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/GdkGraphics.java,v
retrieving revision 1.54
diff -u -r1.54 GdkGraphics.java
--- gnu/java/awt/peer/gtk/GdkGraphics.java 16 Mar 2006 20:21:10 -0000 1.54
+++ gnu/java/awt/peer/gtk/GdkGraphics.java 30 Mar 2006 18:51:59 -0000
@@ -219,8 +219,10 @@
public boolean drawImage (Image img, int x, int y,
Color bgcolor, ImageObserver observer)
{
- return drawImage(img, x, y, img.getWidth(null), img.getHeight(null),
- bgcolor, observer);
+ if (img != null)
+ return drawImage(img, x, y, img.getWidth(null), img.getHeight(null),
+ bgcolor, observer);
+ return false;
}
public boolean drawImage (Image img, int x, int y, ImageObserver observer)
@@ -228,16 +230,19 @@
return drawImage (img, x, y, null, observer);
}
- public boolean drawImage (Image img, int x, int y, int width, int height,
- Color bgcolor, ImageObserver observer)
+ public boolean drawImage(Image img, int x, int y, int width, int height,
+ Color bgcolor, ImageObserver observer)
{
- if (img instanceof GtkImage)
- return ((GtkImage)img).drawImage (this, x, y, width, height,
- bgcolor, observer);
- else
- return (new GtkImage(img.getSource())).drawImage (this, x, y,
- width, height,
- bgcolor, observer);
+ if (img != null)
+ {
+ if (img instanceof GtkImage)
+ return ((GtkImage) img).drawImage(this, x, y, width, height, bgcolor,
+ observer);
+ return (new GtkImage(img.getSource())).drawImage(this, x, y, width,
+ height, bgcolor,
+ observer);
+ }
+ return false;
}
public boolean drawImage (Image img, int x, int y, int width, int height,
@@ -250,14 +255,16 @@
int sx1, int sy1, int sx2, int sy2,
Color bgcolor, ImageObserver observer)
{
- if (img instanceof GtkImage)
- return ((GtkImage)img).drawImage(this, dx1, dy1, dx2, dy2,
- sx1, sy1, sx2, sy2, bgcolor, observer);
- else
- return (new GtkImage(img.getSource())).drawImage(this, dx1, dy1,
- dx2, dy2,
- sx1, sy1, sx2, sy2,
- bgcolor, observer);
+ if (img != null)
+ {
+ if (img instanceof GtkImage)
+ return ((GtkImage) img).drawImage(this, dx1, dy1, dx2, dy2, sx1, sy1,
+ sx2, sy2, bgcolor, observer);
+ return (new GtkImage(img.getSource())).drawImage(this, dx1, dy1, dx2,
+ dy2, sx1, sy1, sx2,
+ sy2, bgcolor, observer);
+ }
+ return false;
}
public boolean drawImage (Image img, int dx1, int dy1, int dx2, int dy2,
Index: java/awt/Choice.java
===================================================================
RCS file: /sources/classpath/classpath/java/awt/Choice.java,v
retrieving revision 1.24
diff -u -r1.24 Choice.java
--- java/awt/Choice.java 8 Feb 2006 16:31:23 -0000 1.24
+++ java/awt/Choice.java 30 Mar 2006 18:52:00 -0000
@@ -556,6 +557,17 @@
super.processEvent(event);
}
+void
+dispatchEventImpl(AWTEvent e)
+{
+ if (e.id <= ItemEvent.ITEM_LAST
+ && e.id >= ItemEvent.ITEM_FIRST
+ && (item_listeners != null || (eventMask & AWTEvent.ITEM_EVENT_MASK) != 0))
+ processEvent(e);
+ else
+ super.dispatchEventImpl(e);
+}
+
/*************************************************************************/
/**