diff options
Diffstat (limited to 'ui/events/event_targeter.cc')
-rw-r--r-- | ui/events/event_targeter.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/ui/events/event_targeter.cc b/ui/events/event_targeter.cc index 41d4442..50fe7e9 100644 --- a/ui/events/event_targeter.cc +++ b/ui/events/event_targeter.cc @@ -32,16 +32,18 @@ EventTarget* EventTargeter::FindTargetForLocatedEvent(EventTarget* root, EventTarget* target = root; EventTarget* child = NULL; while ((child = iter->GetNextTarget())) { - if (!SubtreeShouldBeExploredForEvent(child, *event)) + EventTargeter* targeter = child->GetEventTargeter(); + if (!targeter) + targeter = this; + if (!targeter->SubtreeShouldBeExploredForEvent(child, *event)) continue; target->ConvertEventToTarget(child, event); - EventTargeter* targeter = child->GetEventTargeter(); + target = child; EventTarget* child_target = targeter ? targeter->FindTargetForLocatedEvent(child, event) : FindTargetForLocatedEvent(child, event); if (child_target) return child_target; - target = child; } target->ConvertEventToTarget(root, event); } |