[Top][All Lists]
[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);
}
}
signature.asc
Description: This is a digitally signed message part
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [cp-patches] FYI: gcj gui-branch fixes for EventHandling,
Mark Wielaard <=