Index: ui/aura/window_targeter.h |
diff --git a/ui/aura/window_targeter.h b/ui/aura/window_targeter.h |
index 9571f2ab32f70d982bd533af4ea540964d6dd01d..048d8ad2e472aca897fccab4dfb8c125180d45ab 100644 |
--- a/ui/aura/window_targeter.h |
+++ b/ui/aura/window_targeter.h |
@@ -5,9 +5,15 @@ |
#ifndef UI_AURA_WINDOW_TARGETER_H_ |
#define UI_AURA_WINDOW_TARGETER_H_ |
+#include "base/macros.h" |
#include "ui/aura/aura_export.h" |
#include "ui/events/event_targeter.h" |
+namespace ui { |
+class KeyEvent; |
+class LocatedEvent; |
+} // namespace ui |
+ |
namespace aura { |
class Window; |
@@ -17,22 +23,50 @@ class AURA_EXPORT WindowTargeter : public ui::EventTargeter { |
WindowTargeter(); |
~WindowTargeter() override; |
+ // Returns true if |window| or one of its descendants can be a target of |
+ // |event|. This requires that |window| and its descendants are not |
+ // prohibited from accepting the event, and that the event is within an |
+ // actionable region of the target's bounds. Note that the location etc. of |
+ // |event| is in |window|'s parent's coordinate system. |
+ virtual bool SubtreeShouldBeExploredForEvent(Window* window, |
+ const ui::LocatedEvent& event); |
+ |
protected: |
+ // Same as FindTargetForEvent(), but used for positional events. The location |
+ // etc. of |event| are in |root|'s coordinate system. When finding the target |
+ // for the event, the targeter can mutate the |event| (e.g. change the |
+ // coordinate to be in the returned target's coordinate system) so that it can |
+ // be dispatched to the target without any further modification. |
+ virtual Window* FindTargetForLocatedEvent(Window* window, |
+ ui::LocatedEvent* event); |
+ |
+ // Returns false if neither |window| nor any of its descendants are allowed |
+ // to accept |event| for reasons unrelated to the event's location or the |
+ // target's bounds. For example, overrides of this function may consider |
+ // attributes such as the visibility or enabledness of |window|. Note that |
+ // the location etc. of |event| is in |window|'s parent's coordinate system. |
+ virtual bool SubtreeCanAcceptEvent(Window* window, |
+ const ui::LocatedEvent& event) const; |
+ |
+ // Returns whether the location of the event is in an actionable region of the |
+ // target. Note that the location etc. of |event| is in the |window|'s |
+ // parent's coordinate system. |
+ virtual bool EventLocationInsideBounds(Window* target, |
+ const ui::LocatedEvent& event) const; |
+ |
// ui::EventTargeter: |
ui::EventTarget* FindTargetForEvent(ui::EventTarget* root, |
ui::Event* event) override; |
- ui::EventTarget* FindTargetForLocatedEvent(ui::EventTarget* root, |
- ui::LocatedEvent* event) override; |
- bool SubtreeCanAcceptEvent(ui::EventTarget* target, |
- const ui::LocatedEvent& event) const override; |
- bool EventLocationInsideBounds(ui::EventTarget* target, |
- const ui::LocatedEvent& event) const override; |
+ ui::EventTarget* FindNextBestTarget(ui::EventTarget* previous_target, |
+ ui::Event* event) override; |
private: |
- Window* FindTargetForKeyEvent(Window* root_window, |
- const ui::KeyEvent& event); |
+ Window* FindTargetForKeyEvent(Window* root_window, const ui::KeyEvent& event); |
+ Window* FindTargetForNonKeyEvent(Window* root_window, ui::Event* event); |
Window* FindTargetInRootWindow(Window* root_window, |
const ui::LocatedEvent& event); |
+ Window* FindTargetForLocatedEventRecursively(Window* root_window, |
+ ui::LocatedEvent* event); |
DISALLOW_COPY_AND_ASSIGN(WindowTargeter); |
}; |