Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(25)

Unified Diff: ui/events/event_target_iterator.h

Issue 724973003: Get event targetting working for mouse events. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: More comments, de-const a bunch of stuff in ui/. Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/events/event_target.h ('k') | ui/events/test/test_event_target.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/events/event_target_iterator.h
diff --git a/ui/events/event_target_iterator.h b/ui/events/event_target_iterator.h
index 28b4a30202a3fa2e29d1f32520188f2ac5bb06cb..1333475a951a472eae5b27cd869b230102899b04 100644
--- a/ui/events/event_target_iterator.h
+++ b/ui/events/event_target_iterator.h
@@ -28,11 +28,11 @@ class EventTargetIteratorImpl : public EventTargetIterator {
: begin_(children.rbegin()),
end_(children.rend()) {
}
- virtual ~EventTargetIteratorImpl() {}
+ ~EventTargetIteratorImpl() override {}
- virtual EventTarget* GetNextTarget() override {
+ EventTarget* GetNextTarget() override {
if (begin_ == end_)
- return NULL;
+ return nullptr;
EventTarget* target = *(begin_);
++begin_;
return target;
@@ -43,6 +43,31 @@ class EventTargetIteratorImpl : public EventTargetIterator {
typename std::vector<T*>::const_reverse_iterator end_;
};
+// Provides a version which keeps a copy of the data (for when it has to be
+// derived instead of pointed at).
+template <typename T>
+class CopyingEventTargetIteratorImpl : public EventTargetIterator {
+ public:
+ explicit CopyingEventTargetIteratorImpl(const std::vector<T*>& children)
+ : children_(children),
+ begin_(children_.rbegin()),
+ end_(children_.rend()) {}
+ ~CopyingEventTargetIteratorImpl() override {}
+
+ EventTarget* GetNextTarget() override {
+ if (begin_ == end_)
+ return nullptr;
+ EventTarget* target = *(begin_);
+ ++begin_;
+ return target;
+ }
+
+ private:
+ typename std::vector<T*> children_;
+ typename std::vector<T*>::const_reverse_iterator begin_;
+ typename std::vector<T*>::const_reverse_iterator end_;
+};
+
} // namespace ui
#endif // UI_EVENTS_EVENT_TARGET_ITERATOR_H_
« no previous file with comments | « ui/events/event_target.h ('k') | ui/events/test/test_event_target.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698