| 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(); |
| 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 |