OSDN Git Service

2004-01-21 David Jee <djee@redhat.com>
authordjee <djee@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Jan 2004 14:39:15 +0000 (14:39 +0000)
committerdjee <djee@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Jan 2004 14:39:15 +0000 (14:39 +0000)
        * java/awt/Container.java
        (LightweightDispatcher.handleEvent): Add an extra check to avoid
        dispatching MOUSE_ENTERED event twice. Translate the point for
        the mouse event target before dispatching the event.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76278 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/java/awt/Container.java

index 889e520..97c75ef 100644 (file)
@@ -1,3 +1,10 @@
+2004-01-21  David Jee  <djee@redhat.com>
+
+       * java/awt/Container.java
+       (LightweightDispatcher.handleEvent): Add an extra check to avoid
+       dispatching MOUSE_ENTERED event twice. Translate the point for
+       the mouse event target before dispatching the event.
+
 2004-01-20  Jakub Jelinek  <jakub@redhat.com>
 
        * Makefile.am (lib_org_w3c_dom_la_LIBADD,
index caf1134..5d176be 100644 (file)
@@ -1633,8 +1633,18 @@ class LightweightDispatcher implements Serializable
         MouseEvent me = (MouseEvent) e;
         acquireComponentForMouseEvent (me);
 
-        if (mouseEventTarget != null)
+        // Avoid dispatching an ENTERED event twice
+        if (mouseEventTarget != null
+            && e.getID() != MouseEvent.MOUSE_ENTERED)
           {
+            // Calculate point translation for the event target.
+            // We use absolute location on screen rather than relative
+            // location because the event target might be a nested child.
+            Point parentLocation = nativeContainer.getLocationOnScreen();
+            Point childLocation = mouseEventTarget.getLocationOnScreen();
+            me.translatePoint(parentLocation.x - childLocation.x,
+                              parentLocation.y - childLocation.y);
+
             Component oldSource = (Component) me.getSource ();
             me.setSource (mouseEventTarget);
             mouseEventTarget.dispatchEvent (me);