OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <stdio.h> | 5 #include <stdio.h> |
6 #include <string> | 6 #include <string> |
7 | 7 |
8 #include "base/at_exit.h" | 8 #include "base/at_exit.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 | 75 |
76 virtual ~MinimalInputEventFilter() { | 76 virtual ~MinimalInputEventFilter() { |
77 root_->RemovePreTargetHandler(this); | 77 root_->RemovePreTargetHandler(this); |
78 root_->SetProperty(aura::client::kRootWindowInputMethodKey, | 78 root_->SetProperty(aura::client::kRootWindowInputMethodKey, |
79 static_cast<ui::InputMethod*>(NULL)); | 79 static_cast<ui::InputMethod*>(NULL)); |
80 } | 80 } |
81 | 81 |
82 private: | 82 private: |
83 // ui::EventHandler: | 83 // ui::EventHandler: |
84 virtual void OnKeyEvent(ui::KeyEvent* event) OVERRIDE { | 84 virtual void OnKeyEvent(ui::KeyEvent* event) OVERRIDE { |
85 const ui::EventType type = event->type(); | 85 // See the comment in InputMethodEventFilter::OnKeyEvent() for details. |
86 if (type == ui::ET_TRANSLATED_KEY_PRESS || | 86 if (event->IsTranslated()) { |
87 type == ui::ET_TRANSLATED_KEY_RELEASE) { | 87 event->SetTranslated(false); |
88 // The |event| is already handled by this object, change the type of the | |
89 // event to ui::ET_KEY_* and pass it to the next filter. | |
90 static_cast<ui::TranslatedKeyEvent*>(event)->ConvertToKeyEvent(); | |
91 } else { | 88 } else { |
92 if (input_method_->DispatchKeyEvent(*event)) | 89 if (input_method_->DispatchKeyEvent(*event)) |
93 event->StopPropagation(); | 90 event->StopPropagation(); |
94 } | 91 } |
95 } | 92 } |
96 | 93 |
97 // ui::internal::InputMethodDelegate: | 94 // ui::internal::InputMethodDelegate: |
98 virtual bool DispatchKeyEventPostIME(const ui::KeyEvent& event) OVERRIDE { | 95 virtual bool DispatchKeyEventPostIME(const ui::KeyEvent& event) OVERRIDE { |
99 ui::TranslatedKeyEvent aura_event(event); | 96 // See the comment in InputMethodEventFilter::DispatchKeyEventPostIME() for |
| 97 // details. |
| 98 ui::KeyEvent aura_event(event); |
| 99 aura_event.SetTranslated(true); |
100 ui::EventDispatchDetails details = | 100 ui::EventDispatchDetails details = |
101 root_->GetHost()->dispatcher()->OnEventFromSource(&aura_event); | 101 root_->GetHost()->dispatcher()->OnEventFromSource(&aura_event); |
102 return aura_event.handled() || details.dispatcher_destroyed; | 102 return aura_event.handled() || details.dispatcher_destroyed; |
103 } | 103 } |
104 | 104 |
105 aura::Window* root_; | 105 aura::Window* root_; |
106 scoped_ptr<ui::InputMethod> input_method_; | 106 scoped_ptr<ui::InputMethod> input_method_; |
107 | 107 |
108 DISALLOW_COPY_AND_ASSIGN(MinimalInputEventFilter); | 108 DISALLOW_COPY_AND_ASSIGN(MinimalInputEventFilter); |
109 }; | 109 }; |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
284 // MessageLoop is not of TYPE_UI. I think we need a way to build | 284 // MessageLoop is not of TYPE_UI. I think we need a way to build |
285 // Aura that doesn't define platform-specific stuff. | 285 // Aura that doesn't define platform-specific stuff. |
286 aura::Env::CreateInstance(true); | 286 aura::Env::CreateInstance(true); |
287 | 287 |
288 mojo::Application app(shell_handle); | 288 mojo::Application app(shell_handle); |
289 app.AddService<mojo::examples::LauncherImpl>(&app); | 289 app.AddService<mojo::examples::LauncherImpl>(&app); |
290 | 290 |
291 loop.Run(); | 291 loop.Run(); |
292 return MOJO_RESULT_OK; | 292 return MOJO_RESULT_OK; |
293 } | 293 } |
OLD | NEW |