mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 02:54:35 +02:00
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:
parent
f92bcde478
commit
cdf1fcc79d
1 changed files with 44 additions and 41 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue