[kaffe] CVS kaffe (dalibor): AWT clipping and mouse event handling fixes

Fabien Renaud renaud at nentec.de
Thu Jul 8 03:12:44 PDT 2004


Kaffe CVS wrote:

>PatchSet 4902 
>Date: 2004/07/07 12:58:43
>Author: dalibor
>Branch: HEAD
>Tag: (none) 
>Log:
>AWT clipping and mouse event handling fixes
>
>2004-07-07  Jim Huang <jserv at kaffe.org>
>
>        * libraries/javalib/java/awt/Graphics.java:
>        * libraries/javalib/java/awt/Image.java:
>        * libraries/javalib/java/awt/NativeGraphics.java:
>        * libraries/javalib/java/awt/PSGraphics.java:
>        Adapt the AWT clipping fixing patch from
>        Benja Fallenstein <b.fallenstein at gmx.de>.
>        Update the copyright notice.
>
>        * libraries/javalib/java/awt/event/MouseEvent.java
>        (MouseEvent)
>        (getButton):
>        Adapt the Java 1.4 features to java.awt.event.MouseEvent
>        patch from Benja Fallenstein <b.fallenstein at gmx.de>.
>        This only affects MouseEvent via making the old
>        constructor do the work of figuring out which button
>        it is from the modifiers list.
>        Update the copyright notice.
>
>Members: 
>	ChangeLog:1.2468->1.2469 
>	libraries/javalib/java/awt/Graphics.java:1.7->1.8 
>	libraries/javalib/java/awt/Image.java:1.17->1.18 
>	libraries/javalib/java/awt/NativeGraphics.java:1.11->1.12 
>	libraries/javalib/java/awt/PSGraphics.java:1.4->1.5 
>	libraries/javalib/java/awt/event/MouseEvent.java:1.9->1.10 
>
>Index: kaffe/ChangeLog
>diff -u kaffe/ChangeLog:1.2468 kaffe/ChangeLog:1.2469
>--- kaffe/ChangeLog:1.2468	Wed Jul  7 08:46:38 2004
>+++ kaffe/ChangeLog	Wed Jul  7 12:58:43 2004
>@@ -1,3 +1,23 @@
>+2004-07-07  Jim Huang <jserv at kaffe.org>
>+
>+ 	* libraries/javalib/java/awt/Graphics.java:
>+ 	* libraries/javalib/java/awt/Image.java:
>+ 	* libraries/javalib/java/awt/NativeGraphics.java:
>+ 	* libraries/javalib/java/awt/PSGraphics.java:
>+ 	Adapt the AWT clipping fixing patch from 
>+ 	Benja Fallenstein <b.fallenstein at gmx.de>.
>+ 	Update the copyright notice.
>+ 
>+ 	* libraries/javalib/java/awt/event/MouseEvent.java
>+ 	(MouseEvent)
>+ 	(getButton):
>+ 	Adapt the Java 1.4 features to java.awt.event.MouseEvent
>+ 	patch from Benja Fallenstein <b.fallenstein at gmx.de>.
>+ 	This only affects MouseEvent via making the old 
>+ 	constructor do the work of figuring out which button 
>+ 	it is from the modifiers list.
>+ 	Update the copyright notice.
>+ 
> 2004-07-07  Guilhem Lavaux <guilhem at kaffe.org>
> 
> 	* WHATNEW: Added some news line.
>Index: kaffe/libraries/javalib/java/awt/Graphics.java
>diff -u kaffe/libraries/javalib/java/awt/Graphics.java:1.7 kaffe/libraries/javalib/java/awt/Graphics.java:1.8
>--- kaffe/libraries/javalib/java/awt/Graphics.java:1.7	Wed Feb 10 21:34:31 1999
>+++ kaffe/libraries/javalib/java/awt/Graphics.java	Wed Jul  7 12:58:45 2004
>@@ -1,8 +1,4 @@
>-package java.awt;
>-
>-import java.awt.image.ImageObserver;
>-
>-/**
>+/*
>  * Graphics - abstract draw object
>  *
>  * Note that this had to be changed into an abstract class with *some*
>@@ -12,11 +8,19 @@
>  * Copyright (c) 1998
>  *      Transvirtual Technologies, Inc.  All rights reserved.
>  *
>+ * Copyright (c) 2004
>+ *	The Kaffe.org's developers. See ChangeLog for details.
>+ *
>  * See the file "license.terms" for information on usage and redistribution 
>  * of this file. 
>  *
>  * @author P.C.Mehlitz
>  */
>+
>+package java.awt;
>+
>+import java.awt.image.ImageObserver;
>+
> abstract public class Graphics
> {
> protected Graphics () {
>@@ -171,7 +175,12 @@
> 
> abstract public Shape getClip ();
> 
>-abstract public Rectangle getClipBounds();
>+public Rectangle getClipBounds() {
>+	// Another return object which is modified by Swing, causing more garbage
>+	return (getClipBounds(new Rectangle()));
>+}
>+
>+abstract public Rectangle getClipBounds(Rectangle rect);
> 
> int getClipHeight () {
> 	// this is only here to be resolved in concrete subclasses
>Index: kaffe/libraries/javalib/java/awt/Image.java
>diff -u kaffe/libraries/javalib/java/awt/Image.java:1.17 kaffe/libraries/javalib/java/awt/Image.java:1.18
>--- kaffe/libraries/javalib/java/awt/Image.java:1.17	Wed Jun  9 17:40:16 2004
>+++ kaffe/libraries/javalib/java/awt/Image.java	Wed Jul  7 12:58:45 2004
>@@ -1,3 +1,16 @@
>+/*
>+ * Copyright (c) 1998
>+ *    Transvirtual Technologies, Inc.  All rights reserved.
>+ *
>+ * Copyright (c) 2004
>+ *	The Kaffe.org's developers. See ChangeLog for details.
>+ *
>+ * See the file "license.terms" for information on usage and redistribution
>+ * of this file.
>+ *
>+ * @author P.C.Mehlitz
>+ */
>+
> package java.awt;
> 
> import java.awt.image.ImageObserver;
>@@ -12,15 +25,6 @@
> import kaffe.util.Ptr;
> import kaffe.util.VectorSnapshot;
> 
>-/**
>- * Copyright (c) 1998
>- *    Transvirtual Technologies, Inc.  All rights reserved.
>- *
>- * See the file "license.terms" for information on usage and redistribution
>- * of this file.
>- *
>- * @author P.C.Mehlitz
>- */
> public class Image
> {
> 	Ptr nativeData;
>@@ -268,7 +272,6 @@
> }
> 
> public synchronized int getWidth ( ImageObserver observer ) {
>-	System.err.println("getWidth()="+width + " producer="+producer);
> 	if ( (flags & ImageObserver.WIDTH) != 0 ) {
> 		return (width);
> 	}
>@@ -353,8 +356,6 @@
> 	ImageObserver obs;
> 
> 	this.flags |= flags;
>-
>-	System.err.println("producer="+producer + " flags="+this.flags);
> 
> 	if (observers == null) {
> 		return;
>Index: kaffe/libraries/javalib/java/awt/NativeGraphics.java
>diff -u kaffe/libraries/javalib/java/awt/NativeGraphics.java:1.11 kaffe/libraries/javalib/java/awt/NativeGraphics.java:1.12
>--- kaffe/libraries/javalib/java/awt/NativeGraphics.java:1.11	Mon Mar 22 11:24:34 2004
>+++ kaffe/libraries/javalib/java/awt/NativeGraphics.java	Wed Jul  7 12:58:46 2004
>@@ -1,10 +1,4 @@
>-package java.awt;
>-
>-import java.awt.image.ImageObserver;
>-
>-import kaffe.util.Ptr;
>-
>-/**
>+/*
>  * NativeGraphics - concrete, hidden implementation of abstract Graphics
>  *
>  * The approach of using an abstract Graphics with a concrete NativeGraphics
>@@ -26,11 +20,20 @@
>  * Copyright (c) 1998
>  *      Transvirtual Technologies, Inc.  All rights reserved.
>  *
>+ * Copyright (c) 2004
>+ * 	The Kaffe.org's developers. See ChangeLog for details.
>+ *
>  * See the file "license.terms" for information on usage and redistribution 
>  * of this file. 
>  *
>  * @author P.C.Mehlitz
>  */
>+
>+package java.awt;
>+
>+import java.awt.image.ImageObserver;
>+import kaffe.util.Ptr;
>+
> class NativeGraphics
>   extends Graphics
> {
>@@ -43,7 +46,9 @@
> 	int xClip;
> 	int yClip;
> 	int wClip;
>+	int wClipDefault;
> 	int hClip;
>+	int hClipDefault;
> 	Color xClr;
> /*
>  * this field can be used to link a Graphics object to a non-native
>@@ -389,9 +394,13 @@
> 	return (getClipRect());
> }
> 
>-public Rectangle getClipBounds() {
>-	// Another return object which is modified by Swing, causing more garbage <sigh>
>-	return (new Rectangle( xClip, yClip, wClip, hClip));
>+public Rectangle getClipBounds(Rectangle rect) {
>+	rect.x = xClip;
>+	rect.y = yClip;
>+	rect.width = wClip;
>+	rect.height = hClip;
>+
>+	return rect;
> }
> 
> int getClipHeight () {
>@@ -545,7 +554,9 @@
> 	g.xClip  = xClip;
> 	g.yClip  = yClip;
> 	g.wClip  = wClip;
>+	g.wClipDefault = wClip;
> 	g.hClip = hClip;
>+	g.hClipDefault = hClip;
> 	g.font     = fnt;
> 	g.fgClr    = fg;
> 	g.bgClr    = bg;
>@@ -627,8 +638,14 @@
> }
> 
> public void setClip ( Shape clip ){
>-	Rectangle r = clip.getBounds();
>-	setClip( r.x, r.y, r.width, r.height);
>+	if ( clip != null ) {
>+		Rectangle r = clip.getBounds();
>+		setClip( r.x, r.y, r.width, r.height);
>+	} else if ( target != null) {
>+		setClip( 0, 0, target.width, target.height );
>+	} else {
>+		setClip( 0, 0, wClipDefault, hClipDefault );
>+	}
> }
> 
> public void setClip ( int x, int y, int width, int height ) {
>Index: kaffe/libraries/javalib/java/awt/PSGraphics.java
>diff -u kaffe/libraries/javalib/java/awt/PSGraphics.java:1.4 kaffe/libraries/javalib/java/awt/PSGraphics.java:1.5
>--- kaffe/libraries/javalib/java/awt/PSGraphics.java:1.4	Wed Feb 10 21:34:34 1999
>+++ kaffe/libraries/javalib/java/awt/PSGraphics.java	Wed Jul  7 12:58:46 2004
>@@ -1,3 +1,18 @@
>+/*
>+ * class PSGraphics - a PrintGraphics PostScript implementation
>+ *
>+ * Copyright (c) 1998
>+ *      Transvirtual Technologies, Inc.  All rights reserved.
>+ *
>+ * Copyright (c) 2004
>+ *	The Kaffe.org's developers. See ChangeLog for details.
>+ *
>+ * See the file "license.terms" for information on usage and redistribution
>+ * of this file.
>+ *
>+ * @author J.Mehlitz
>+ */
>+
> package java.awt;
> 
> import java.awt.image.ColorModel;
>@@ -9,17 +24,6 @@
> import java.io.PrintStream;
> import java.util.Hashtable;
> 
>-/**
>- * class PSGraphics - a PrintGraphics PostScript implementation
>- *
>- * Copyright (c) 1998
>- *      Transvirtual Technologies, Inc.  All rights reserved.
>- *
>- * See the file "license.terms" for information on usage and redistribution
>- * of this file.
>- *
>- * @author J.Mehlitz
>- */
> public class PSGraphics
>   extends Graphics
>   implements PrintGraphics
>@@ -276,7 +280,11 @@
> }
> 
> public Rectangle getClipBounds() {
>-	return null;
>+        return null;
>+}
>+
>+public Rectangle getClipBounds(Rectangle rect) {
>+        return rect;
> }
> 
> public Color getColor() {
>Index: kaffe/libraries/javalib/java/awt/event/MouseEvent.java
>diff -u kaffe/libraries/javalib/java/awt/event/MouseEvent.java:1.9 kaffe/libraries/javalib/java/awt/event/MouseEvent.java:1.10
>--- kaffe/libraries/javalib/java/awt/event/MouseEvent.java:1.9	Sat May 17 17:28:02 2003
>+++ kaffe/libraries/javalib/java/awt/event/MouseEvent.java	Wed Jul  7 12:58:46 2004
>@@ -1,19 +1,23 @@
>-package java.awt.event;
>-
>-import java.awt.Component;
>-import java.awt.Event;
>-import java.awt.Point;
>-
>-/**
>+/*
>  *
>  * Copyright (c) 1998
>  *   Transvirtual Technologies Inc.  All rights reserved.
>  *
>+ * Copyright (c) 2004
>+ *	The Kaffe.org's developers. See ChangeLog for details.
>+ *
>  * See the file "license.terms" for information on usage and redistribution
>  * of this file.
>  *
>  * @author P.C.Mehlitz
>  */
>+
>+package java.awt.event;
>+
>+import java.awt.Component;
>+import java.awt.Event;
>+import java.awt.Point;
>+
> public class MouseEvent
>   extends InputEvent
> {
>@@ -21,6 +25,12 @@
> 	protected int y;
> 	protected int clickCount;
> 	protected boolean isPopupTrigger;
>+	
>+	protected int button;
>+	final public static int BUTTON1 = 1;
>+	final public static int BUTTON2 = 2;
>+	final public static int BUTTON3 = 3;
>+	final public static int NOBUTTON = 0;
> 	final public static int MOUSE_FIRST = 500;
> 	final public static int MOUSE_LAST = 507;
> 	final public static int MOUSE_CLICKED = MOUSE_FIRST;
>@@ -55,6 +65,35 @@
> 	this.y = y;
> 	this.clickCount = clickCount;
> 	this.isPopupTrigger = isPopupTrigger;
>+
>+	if ( ( modifiers & BUTTON1_MASK ) > 0 )
>+		this.button = BUTTON1;
>+	else if ( ( modifiers & BUTTON2_MASK ) > 0 )
>+		this.button = BUTTON2;
>+	else if ( ( modifiers & BUTTON3_MASK) > 0 )
>+		this.button = BUTTON3;
>+	else
>+		this.button = NOBUTTON;
>+}
>+
>+public MouseEvent ( Component src, int evtId, long time, int modifiers,
>+		int x, int y, int clickCount, boolean isPopupTrigger, 
>+		int button) {
>+	super( src, evtId);
>+	
>+	this.when = time;
>+	this.modifiers = modifiers;
>+
>+	this.x = x;
>+	this.y = y;
>+	this.clickCount = clickCount;
>+	this.isPopupTrigger = isPopupTrigger;
>+
>+	this.button = button;
>+}
>+
>+public int getButton() {
>+	return button;
> }
> 
> public int getClickCount() {
>
>_______________________________________________
>kaffe mailing list
>kaffe at kaffe.org
>http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
>
>
>  
>
Hello ,

This patch is really not good for my machine :

java.lang.NullPointerException
   at java.awt.MouseEvt.getEvent (MouseEvt.java:288)
   at java.awt.Toolkit.evtGetNextEvent (Toolkit.java)
   at java.awt.EventQueue.getNextEvent (EventQueue.java:174)
   at java.awt.EventDispatchThread.run (EventDispatchThread.java:34)
java.lang.ArrayIndexOutOfBoundsException
   at java.awt.MouseEvt.getEvent (MouseEvt.java:283)
   at java.awt.Toolkit.evtGetNextEvent (Toolkit.java)
   at java.awt.EventQueue.getNextEvent (EventQueue.java:174)
   at java.awt.EventDispatchThread.run (EventDispatchThread.java:34)

...
...
java.lang.ArrayIndexOutOfBoundsException
   at java.awt.ComponentEvt.getEvent (ComponentEvt.java:98)
   at java.awt.Toolkit.evtGetNextEvent (Toolkit.java)
   at java.awt.EventQueue.getNextEvent (EventQueue.java:174)
   at java.awt.EventDispatchThread.run (EventDispatchThread.java:34)
java.lang.ArrayIndexOutOfBoundsException
   at java.awt.ComponentEvt.getEvent (ComponentEvt.java:98)
   at java.awt.Toolkit.evtGetNextEvent (Toolkit.java)
   at java.awt.EventQueue.getNextEvent (EventQueue.java:174)
   at java.awt.EventDispatchThread.run (EventDispatchThread.java:34)
java.lang.ArrayIndexOutOfBoundsException
   at java.awt.PaintEvt.getEvent (PaintEvt.java:63)
   at java.awt.Toolkit.evtGetNextEvent (Toolkit.java)
   at java.awt.EventQueue.getNextEvent (EventQueue.java:174)
   at java.awt.EventDispatchThread.run (EventDispatchThread.java:34)


Cheers,
Fabien




More information about the kaffe mailing list