classpath-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[cp-patches] FYI: gcj gui-branch fixes for EventHandling


From: Mark Wielaard
Subject: [cp-patches] FYI: gcj gui-branch fixes for EventHandling
Date: Sun, 08 Aug 2004 15:00:42 +0200

Hi,

This imports some fixes for event handling by Kim Ho from the gcj gui
branch.

2004-08-08  Kim Ho  <address@hidden>

       * java/awt/Component.java:
       (processMouseEvent): Consume event after
       listene rs process it.
       (processMouseMotionEvent): ditto.
       (processMouseWheelEvent): ditto.
       * java/awt/Container.java:
       (acquireComponentForMouseEvent):
       Do not dispatch to events that have been
       removed from the Container.
       (handleEvent): Consume the MouseEvents.
       * javax/swing/RepaintManager.java:
       (paintDirtyRegions): Do not add to list of
       damaged areas if the component has no root.

Committed.

Cheers,

Mark
? javax/swing/.RepaintManager.java.swp
Index: java/awt/Component.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Component.java,v
retrieving revision 1.37.2.18
diff -u -r1.37.2.18 Component.java
--- java/awt/Component.java     30 Jul 2004 19:48:32 -0000      1.37.2.18
+++ java/awt/Component.java     3 Aug 2004 18:30:04 -0000
@@ -3028,6 +3028,7 @@
           mouseListener.mouseReleased(e);
         break;
       }
+      e.consume();
   }
 
   /**
@@ -3055,6 +3056,7 @@
           mouseMotionListener.mouseMoved(e);
         break;
       }
+      e.consume();
   }
 
   /**
@@ -3073,7 +3075,10 @@
   {
     if (mouseWheelListener != null
         && e.id == MouseEvent.MOUSE_WHEEL)
+    {
       mouseWheelListener.mouseWheelMoved(e);
+      e.consume();
+    }  
   }
 
   /**
Index: java/awt/Container.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Container.java,v
retrieving revision 1.34.2.16
diff -u -r1.34.2.16 Container.java
--- java/awt/Container.java     30 Jul 2004 19:48:32 -0000      1.34.2.16
+++ java/awt/Container.java     3 Aug 2004 18:30:04 -0000
@@ -1882,21 +1882,25 @@
         && lastComponentEntered.isShowing()
         && lastComponentEntered != candidate)
       {
-        Point tp = 
-          SwingUtilities.convertPoint(nativeContainer, 
-                                      x, y, lastComponentEntered);
-        MouseEvent exited = new MouseEvent (lastComponentEntered, 
-                                            MouseEvent.MOUSE_EXITED,
-                                            me.getWhen (), 
-                                            me.getModifiersEx (), 
-                                            tp.x, tp.y,
-                                            me.getClickCount (),
-                                            me.isPopupTrigger (),
-                                            me.getButton ());
-        lastComponentEntered.dispatchEvent (exited); 
+        // Old candidate could have been removed from 
+        // the nativeContainer so we check first.
+        if (SwingUtilities.isDescendingFrom(lastComponentEntered, 
nativeContainer))
+        {
+          Point tp = 
+            SwingUtilities.convertPoint(nativeContainer, 
+                                        x, y, lastComponentEntered);
+          MouseEvent exited = new MouseEvent (lastComponentEntered, 
+                                              MouseEvent.MOUSE_EXITED,
+                                              me.getWhen (), 
+                                              me.getModifiersEx (), 
+                                              tp.x, tp.y,
+                                              me.getClickCount (),
+                                              me.isPopupTrigger (),
+                                              me.getButton ());
+          lastComponentEntered.dispatchEvent (exited); 
+        }
         lastComponentEntered = null;
       }
-
     // If we have a candidate, maybe enter it.
     if (candidate != null)
       {
@@ -1930,7 +1934,8 @@
       //   - MOUSE_RELEASED
       //   - MOUSE_PRESSED: another button pressed while the first is held down
       //   - MOUSE_DRAGGED
-      mouseEventTarget = pressedComponent;
+      if (SwingUtilities.isDescendingFrom(pressedComponent, nativeContainer))
+        mouseEventTarget = pressedComponent;
     else if (me.getID() == MouseEvent.MOUSE_CLICKED)
       {
         // Don't dispatch CLICKED events whose target is not the same as the
@@ -1980,6 +1985,8 @@
                     pressedComponent = null;
                   break;
               }
+              if (newEvt.isConsumed())
+                e.consume();
           }
       }
     else if (e instanceof KeyEvent && focus != null)
Index: javax/swing/RepaintManager.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/javax/swing/RepaintManager.java,v
retrieving revision 1.2.18.4
diff -u -r1.2.18.4 RepaintManager.java
--- javax/swing/RepaintManager.java     10 Jul 2004 17:53:03 -0000      1.2.18.4
+++ javax/swing/RepaintManager.java     3 Aug 2004 18:30:05 -0000
@@ -431,6 +431,9 @@
         if (damaged.width == 0 || damaged.height == 0)
           continue;
         JRootPane root = comp.getRootPane();
+        // If the component has no root, no repainting will occur.
+        if (root == null)
+          continue;
         Rectangle rootDamage = SwingUtilities.convertRectangle(comp, damaged, 
root);
         if (! roots.containsKey(root))
           {
@@ -450,7 +453,7 @@
         Map.Entry ent = (Map.Entry) i.next();
         JRootPane root = (JRootPane) ent.getKey();
         Rectangle rect = (Rectangle) ent.getValue();
-        root.paintImmediately(rect);                
+        root.paintImmediately(rect);                   
       }
   }
 

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]