OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/events/event_dispatcher.h" | 5 #include "ui/events/event_dispatcher.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "ui/events/event_target.h" | 9 #include "ui/events/event_target.h" |
10 #include "ui/events/event_targeter.h" | 10 #include "ui/events/event_targeter.h" |
(...skipping 27 matching lines...) Expand all Loading... | |
38 if (dispatcher_) | 38 if (dispatcher_) |
39 dispatcher_->OnDispatcherDelegateDestroyed(); | 39 dispatcher_->OnDispatcherDelegateDestroyed(); |
40 } | 40 } |
41 | 41 |
42 Event* EventDispatcherDelegate::current_event() { | 42 Event* EventDispatcherDelegate::current_event() { |
43 return dispatcher_ ? dispatcher_->current_event() : NULL; | 43 return dispatcher_ ? dispatcher_->current_event() : NULL; |
44 } | 44 } |
45 | 45 |
46 EventDispatchDetails EventDispatcherDelegate::DispatchEvent(EventTarget* target, | 46 EventDispatchDetails EventDispatcherDelegate::DispatchEvent(EventTarget* target, |
47 Event* event) { | 47 Event* event) { |
48 LOG(ERROR) << "EventDispatcherDelegate::DispatchEvent 1" | |
49 << ", handled=" << event->handled(); | |
Daniel Erat
2014/04/18 00:44:08
delete
| |
48 CHECK(target); | 50 CHECK(target); |
49 Event::DispatcherApi dispatch_helper(event); | 51 Event::DispatcherApi dispatch_helper(event); |
50 dispatch_helper.set_phase(EP_PREDISPATCH); | 52 dispatch_helper.set_phase(EP_PREDISPATCH); |
51 dispatch_helper.set_result(ER_UNHANDLED); | 53 dispatch_helper.set_result(ER_UNHANDLED); |
52 | 54 |
53 EventDispatchDetails details = PreDispatchEvent(target, event); | 55 EventDispatchDetails details = PreDispatchEvent(target, event); |
56 LOG(ERROR) << "EventDispatcherDelegate::DispatchEvent: 2" | |
57 << ", handled=" << event->handled() | |
58 << ", details.dispatcher_destroyed=" << details.dispatcher_destroyed | |
59 << ", details.target_destroyed=" << details.target_destroyed; | |
54 if (!event->handled() && | 60 if (!event->handled() && |
55 !details.dispatcher_destroyed && | 61 !details.dispatcher_destroyed && |
56 !details.target_destroyed) { | 62 !details.target_destroyed) { |
57 details = DispatchEventToTarget(target, event); | 63 details = DispatchEventToTarget(target, event); |
58 } | 64 } |
59 bool target_destroyed_during_dispatch = details.target_destroyed; | 65 bool target_destroyed_during_dispatch = details.target_destroyed; |
60 if (!details.dispatcher_destroyed) { | 66 if (!details.dispatcher_destroyed) { |
61 details = PostDispatchEvent(target_destroyed_during_dispatch ? | 67 details = PostDispatchEvent(target_destroyed_during_dispatch ? |
62 NULL : target, *event); | 68 NULL : target, *event); |
63 } | 69 } |
64 | 70 |
65 details.target_destroyed |= target_destroyed_during_dispatch; | 71 details.target_destroyed |= target_destroyed_during_dispatch; |
66 return details; | 72 return details; |
67 } | 73 } |
68 | 74 |
69 EventDispatchDetails EventDispatcherDelegate::PreDispatchEvent( | 75 EventDispatchDetails EventDispatcherDelegate::PreDispatchEvent( |
70 EventTarget* target, Event* event) { | 76 EventTarget* target, Event* event) { |
71 return EventDispatchDetails(); | 77 return EventDispatchDetails(); |
72 } | 78 } |
73 | 79 |
74 EventDispatchDetails EventDispatcherDelegate::PostDispatchEvent( | 80 EventDispatchDetails EventDispatcherDelegate::PostDispatchEvent( |
75 EventTarget* target, const Event& event) { | 81 EventTarget* target, const Event& event) { |
76 return EventDispatchDetails(); | 82 return EventDispatchDetails(); |
77 } | 83 } |
78 | 84 |
79 EventDispatchDetails EventDispatcherDelegate::DispatchEventToTarget( | 85 EventDispatchDetails EventDispatcherDelegate::DispatchEventToTarget( |
80 EventTarget* target, | 86 EventTarget* target, |
81 Event* event) { | 87 Event* event) { |
88 LOG(ERROR) << "EventDispatcherDelegate::DispatchEventToTarget"; | |
82 EventDispatcher* old_dispatcher = dispatcher_; | 89 EventDispatcher* old_dispatcher = dispatcher_; |
83 EventDispatcher dispatcher(this); | 90 EventDispatcher dispatcher(this); |
84 dispatcher_ = &dispatcher; | 91 dispatcher_ = &dispatcher; |
85 dispatcher.ProcessEvent(target, event); | 92 dispatcher.ProcessEvent(target, event); |
86 if (!dispatcher.delegate_destroyed()) | 93 if (!dispatcher.delegate_destroyed()) |
87 dispatcher_ = old_dispatcher; | 94 dispatcher_ = old_dispatcher; |
88 else if (old_dispatcher) | 95 else if (old_dispatcher) |
89 old_dispatcher->OnDispatcherDelegateDestroyed(); | 96 old_dispatcher->OnDispatcherDelegateDestroyed(); |
90 | 97 |
91 EventDispatchDetails details; | 98 EventDispatchDetails details; |
(...skipping 14 matching lines...) Expand all Loading... | |
106 EventDispatcher::~EventDispatcher() { | 113 EventDispatcher::~EventDispatcher() { |
107 } | 114 } |
108 | 115 |
109 void EventDispatcher::OnHandlerDestroyed(EventHandler* handler) { | 116 void EventDispatcher::OnHandlerDestroyed(EventHandler* handler) { |
110 handler_list_.erase(std::find(handler_list_.begin(), | 117 handler_list_.erase(std::find(handler_list_.begin(), |
111 handler_list_.end(), | 118 handler_list_.end(), |
112 handler)); | 119 handler)); |
113 } | 120 } |
114 | 121 |
115 void EventDispatcher::ProcessEvent(EventTarget* target, Event* event) { | 122 void EventDispatcher::ProcessEvent(EventTarget* target, Event* event) { |
123 LOG(ERROR) << "EventDispatcherDelegate::ProcessEvent"; | |
116 if (!target || !target->CanAcceptEvent(*event)) | 124 if (!target || !target->CanAcceptEvent(*event)) |
117 return; | 125 return; |
118 | 126 |
119 ScopedDispatchHelper dispatch_helper(event); | 127 ScopedDispatchHelper dispatch_helper(event); |
120 dispatch_helper.set_target(target); | 128 dispatch_helper.set_target(target); |
121 | 129 |
122 handler_list_.clear(); | 130 handler_list_.clear(); |
123 target->GetPreTargetHandlers(&handler_list_); | 131 target->GetPreTargetHandlers(&handler_list_); |
124 | 132 |
125 dispatch_helper.set_phase(EP_PRETARGET); | 133 dispatch_helper.set_phase(EP_PRETARGET); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
185 return; | 193 return; |
186 } | 194 } |
187 | 195 |
188 base::AutoReset<Event*> event_reset(¤t_event_, event); | 196 base::AutoReset<Event*> event_reset(¤t_event_, event); |
189 handler->OnEvent(event); | 197 handler->OnEvent(event); |
190 if (!delegate_ && event->cancelable()) | 198 if (!delegate_ && event->cancelable()) |
191 event->StopPropagation(); | 199 event->StopPropagation(); |
192 } | 200 } |
193 | 201 |
194 } // namespace ui | 202 } // namespace ui |
OLD | NEW |