| Index: services/ui/ws/event_dispatcher.cc
|
| diff --git a/services/ui/ws/event_dispatcher.cc b/services/ui/ws/event_dispatcher.cc
|
| index 4791478876183e8d72d4ba8b8d7a756cd32ec816..162b4895db0c2b5e36b0892393c32a2bbd6b8e8c 100644
|
| --- a/services/ui/ws/event_dispatcher.cc
|
| +++ b/services/ui/ws/event_dispatcher.cc
|
| @@ -253,18 +253,22 @@ void EventDispatcher::RemoveAccelerator(uint32_t id) {
|
| accelerators_.erase(it);
|
| }
|
|
|
| -void EventDispatcher::ProcessEvent(const ui::Event& event) {
|
| +void EventDispatcher::ProcessEvent(const ui::Event& event,
|
| + AcceleratorMatchPhase match_phase) {
|
| if (event.IsKeyEvent()) {
|
| const ui::KeyEvent* key_event = event.AsKeyEvent();
|
| - if (event.type() == ui::ET_KEY_PRESSED && !key_event->is_char()) {
|
| + if (event.type() == ui::ET_KEY_PRESSED && !key_event->is_char(),
|
| + match_phase == AcceleratorMatchPhase::ANY) {
|
| Accelerator* pre_target =
|
| FindAccelerator(*key_event, ui::mojom::AcceleratorPhase::PRE_TARGET);
|
| if (pre_target) {
|
| - delegate_->OnAccelerator(pre_target->id(), event);
|
| + delegate_->OnAccelerator(
|
| + pre_target->id(), event,
|
| + EventDispatcherDelegate::AcceleratorPhase::PRE);
|
| return;
|
| }
|
| }
|
| - ProcessKeyEvent(*key_event);
|
| + ProcessKeyEvent(*key_event, match_phase);
|
| return;
|
| }
|
|
|
| @@ -276,7 +280,8 @@ void EventDispatcher::ProcessEvent(const ui::Event& event) {
|
| NOTREACHED();
|
| }
|
|
|
| -void EventDispatcher::ProcessKeyEvent(const ui::KeyEvent& event) {
|
| +void EventDispatcher::ProcessKeyEvent(const ui::KeyEvent& event,
|
| + AcceleratorMatchPhase match_phase) {
|
| Accelerator* post_target =
|
| FindAccelerator(event, ui::mojom::AcceleratorPhase::POST_TARGET);
|
| ServerWindow* focused_window =
|
| @@ -292,7 +297,8 @@ void EventDispatcher::ProcessKeyEvent(const ui::KeyEvent& event) {
|
| }
|
| delegate_->OnEventTargetNotFound(event);
|
| if (post_target)
|
| - delegate_->OnAccelerator(post_target->id(), event);
|
| + delegate_->OnAccelerator(post_target->id(), event,
|
| + EventDispatcherDelegate::AcceleratorPhase::POST);
|
| }
|
|
|
| void EventDispatcher::ProcessLocatedEvent(const ui::LocatedEvent& event) {
|
| @@ -511,9 +517,8 @@ Accelerator* EventDispatcher::FindAccelerator(
|
| const ui::KeyEvent& event,
|
| const ui::mojom::AcceleratorPhase phase) {
|
| for (const auto& pair : accelerators_) {
|
| - if (pair.second->MatchesEvent(event, phase)) {
|
| + if (pair.second->MatchesEvent(event, phase))
|
| return pair.second.get();
|
| - }
|
| }
|
| return nullptr;
|
| }
|
|
|