6607660: java.awt.Container.getMouseEventTargetImpl should be invoked while holding the TreeLock

The body of the method has been wrapped into the synchronized (getTreeLock()) { } block.

Reviewed-by: son, art
This commit is contained in:
Anthony Petrov 2008-03-18 14:10:28 +03:00
parent f92bcde478
commit cdf1fcc79d

View file

@ -2267,6 +2267,7 @@ public class Container extends Component {
EventTargetFilter filter,
boolean searchHeavyweightChildren,
boolean searchHeavyweightDescendants) {
synchronized (getTreeLock()) {
int ncomponents = this.ncomponents;
Component component[] = this.component;
@ -2279,11 +2280,12 @@ public class Container extends Component {
!(comp.peer instanceof LightweightPeer))) &&
comp.contains(x - comp.x, y - comp.y)) {
// found a component that intersects the point, see if there is
// a deeper possibility.
// found a component that intersects the point, see if there
// is a deeper possibility.
if (comp instanceof Container) {
Container child = (Container) comp;
Component deeper = child.getMouseEventTarget(x - child.x,
Component deeper = child.getMouseEventTarget(
x - child.x,
y - child.y,
includeSelf,
filter,
@ -2293,8 +2295,8 @@ public class Container extends Component {
}
} else {
if (filter.accept(comp)) {
// there isn't a deeper target, but this component is a
// target
// there isn't a deeper target, but this component
// is a target
return comp;
}
}
@ -2307,14 +2309,15 @@ public class Container extends Component {
isPeerOK = (peer instanceof LightweightPeer) || includeSelf;
isMouseOverMe = contains(x,y);
// didn't find a child target, return this component if it's a possible
// target
// didn't find a child target, return this component if it's
// a possible target
if (isMouseOverMe && isPeerOK && filter.accept(this)) {
return this;
}
// no possible target
return null;
}
}
static interface EventTargetFilter {
boolean accept(final Component comp);