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 "chrome/browser/chromeos/input_method/input_method_engine.h" | 5 #include "chrome/browser/chromeos/input_method/input_method_engine.h" |
6 | 6 |
7 #define XK_MISCELLANY | 7 #define XK_MISCELLANY |
8 #include <X11/keysymdef.h> | 8 #include <X11/keysymdef.h> |
9 #include <X11/X.h> | 9 #include <X11/X.h> |
10 #include <X11/Xlib.h> | 10 #include <X11/Xlib.h> |
11 #include <X11/Xutil.h> | 11 #include <X11/Xutil.h> |
12 #undef FocusIn | 12 #undef FocusIn |
13 #undef FocusOut | 13 #undef FocusOut |
14 #undef RootWindow | 14 #undef RootWindow |
15 #include <map> | 15 #include <map> |
16 | 16 |
17 #include "ash/shell.h" | 17 #include "ash/shell.h" |
18 #include "base/logging.h" | 18 #include "base/logging.h" |
19 #include "base/memory/scoped_ptr.h" | 19 #include "base/memory/scoped_ptr.h" |
20 #include "base/strings/string_number_conversions.h" | 20 #include "base/strings/string_number_conversions.h" |
21 #include "base/strings/string_util.h" | 21 #include "base/strings/string_util.h" |
22 #include "base/strings/utf_string_conversions.h" | 22 #include "base/strings/utf_string_conversions.h" |
23 #include "chromeos/ime/candidate_window.h" | |
24 #include "chromeos/ime/component_extension_ime_manager.h" | 23 #include "chromeos/ime/component_extension_ime_manager.h" |
25 #include "chromeos/ime/extension_ime_util.h" | 24 #include "chromeos/ime/extension_ime_util.h" |
26 #include "chromeos/ime/ibus_keymap.h" | 25 #include "chromeos/ime/ibus_keymap.h" |
27 #include "chromeos/ime/ibus_text.h" | 26 #include "chromeos/ime/ibus_text.h" |
28 #include "chromeos/ime/input_method_manager.h" | 27 #include "chromeos/ime/input_method_manager.h" |
29 #include "ui/aura/root_window.h" | 28 #include "ui/aura/root_window.h" |
30 #include "ui/aura/window.h" | 29 #include "ui/aura/window.h" |
| 30 #include "ui/base/ime/candidate_window.h" |
31 #include "ui/events/event.h" | 31 #include "ui/events/event.h" |
32 #include "ui/events/keycodes/dom4/keycode_converter.h" | 32 #include "ui/events/keycodes/dom4/keycode_converter.h" |
33 #include "ui/events/keycodes/keyboard_code_conversion_x.h" | 33 #include "ui/events/keycodes/keyboard_code_conversion_x.h" |
34 #include "ui/keyboard/keyboard_controller.h" | 34 #include "ui/keyboard/keyboard_controller.h" |
35 | 35 |
36 namespace chromeos { | 36 namespace chromeos { |
37 const char* kErrorNotActive = "IME is not active"; | 37 const char* kErrorNotActive = "IME is not active"; |
38 const char* kErrorWrongContext = "Context is not active"; | 38 const char* kErrorWrongContext = "Context is not active"; |
39 const char* kCandidateNotFound = "Candidate not found"; | 39 const char* kCandidateNotFound = "Candidate not found"; |
40 const char* kEngineBusPrefix = "org.freedesktop.IBus."; | 40 const char* kEngineBusPrefix = "org.freedesktop.IBus."; |
(...skipping 13 matching lines...) Expand all Loading... |
54 } // namespace | 54 } // namespace |
55 | 55 |
56 InputMethodEngine::InputMethodEngine() | 56 InputMethodEngine::InputMethodEngine() |
57 : focused_(false), | 57 : focused_(false), |
58 active_(false), | 58 active_(false), |
59 context_id_(0), | 59 context_id_(0), |
60 next_context_id_(1), | 60 next_context_id_(1), |
61 observer_(NULL), | 61 observer_(NULL), |
62 preedit_text_(new IBusText()), | 62 preedit_text_(new IBusText()), |
63 preedit_cursor_(0), | 63 preedit_cursor_(0), |
64 candidate_window_(new input_method::CandidateWindow()), | 64 candidate_window_(new ui::CandidateWindow()), |
65 window_visible_(false) {} | 65 window_visible_(false) {} |
66 | 66 |
67 InputMethodEngine::~InputMethodEngine() { | 67 InputMethodEngine::~InputMethodEngine() { |
68 input_method::InputMethodManager::Get()->RemoveInputMethodExtension(imm_id_); | 68 input_method::InputMethodManager::Get()->RemoveInputMethodExtension(imm_id_); |
69 } | 69 } |
70 | 70 |
71 void InputMethodEngine::Initialize( | 71 void InputMethodEngine::Initialize( |
72 InputMethodEngineInterface::Observer* observer, | 72 InputMethodEngineInterface::Observer* observer, |
73 const char* engine_name, | 73 const char* engine_name, |
74 const char* extension_id, | 74 const char* extension_id, |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 | 247 |
248 const InputMethodEngine::CandidateWindowProperty& | 248 const InputMethodEngine::CandidateWindowProperty& |
249 InputMethodEngine::GetCandidateWindowProperty() const { | 249 InputMethodEngine::GetCandidateWindowProperty() const { |
250 return candidate_window_property_; | 250 return candidate_window_property_; |
251 } | 251 } |
252 | 252 |
253 void InputMethodEngine::SetCandidateWindowProperty( | 253 void InputMethodEngine::SetCandidateWindowProperty( |
254 const CandidateWindowProperty& property) { | 254 const CandidateWindowProperty& property) { |
255 // Type conversion from InputMethodEngineInterface::CandidateWindowProperty to | 255 // Type conversion from InputMethodEngineInterface::CandidateWindowProperty to |
256 // CandidateWindow::CandidateWindowProperty defined in chromeos/ime/. | 256 // CandidateWindow::CandidateWindowProperty defined in chromeos/ime/. |
257 input_method::CandidateWindow::CandidateWindowProperty dest_property; | 257 ui::CandidateWindow::CandidateWindowProperty dest_property; |
258 dest_property.page_size = property.page_size; | 258 dest_property.page_size = property.page_size; |
259 dest_property.is_cursor_visible = property.is_cursor_visible; | 259 dest_property.is_cursor_visible = property.is_cursor_visible; |
260 dest_property.is_vertical = property.is_vertical; | 260 dest_property.is_vertical = property.is_vertical; |
261 dest_property.show_window_at_composition = | 261 dest_property.show_window_at_composition = |
262 property.show_window_at_composition; | 262 property.show_window_at_composition; |
263 dest_property.cursor_position = | 263 dest_property.cursor_position = |
264 candidate_window_->GetProperty().cursor_position; | 264 candidate_window_->GetProperty().cursor_position; |
265 dest_property.auxiliary_text = property.auxiliary_text; | 265 dest_property.auxiliary_text = property.auxiliary_text; |
266 dest_property.is_auxiliary_text_visible = property.is_auxiliary_text_visible; | 266 dest_property.is_auxiliary_text_visible = property.is_auxiliary_text_visible; |
267 | 267 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 *error = kErrorWrongContext; | 303 *error = kErrorWrongContext; |
304 return false; | 304 return false; |
305 } | 305 } |
306 | 306 |
307 // TODO: Nested candidates | 307 // TODO: Nested candidates |
308 candidate_ids_.clear(); | 308 candidate_ids_.clear(); |
309 candidate_indexes_.clear(); | 309 candidate_indexes_.clear(); |
310 candidate_window_->mutable_candidates()->clear(); | 310 candidate_window_->mutable_candidates()->clear(); |
311 for (std::vector<Candidate>::const_iterator ix = candidates.begin(); | 311 for (std::vector<Candidate>::const_iterator ix = candidates.begin(); |
312 ix != candidates.end(); ++ix) { | 312 ix != candidates.end(); ++ix) { |
313 input_method::CandidateWindow::Entry entry; | 313 ui::CandidateWindow::Entry entry; |
314 entry.value = ix->value; | 314 entry.value = ix->value; |
315 entry.label = ix->label; | 315 entry.label = ix->label; |
316 entry.annotation = ix->annotation; | 316 entry.annotation = ix->annotation; |
317 entry.description_title = ix->usage.title; | 317 entry.description_title = ix->usage.title; |
318 entry.description_body = ix->usage.body; | 318 entry.description_body = ix->usage.body; |
319 | 319 |
320 // Store a mapping from the user defined ID to the candidate index. | 320 // Store a mapping from the user defined ID to the candidate index. |
321 candidate_indexes_[ix->id] = candidate_ids_.size(); | 321 candidate_indexes_[ix->id] = candidate_ids_.size(); |
322 candidate_ids_.push_back(ix->id); | 322 candidate_ids_.push_back(ix->id); |
323 | 323 |
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
614 // TODO(nona): Implement it. | 614 // TODO(nona): Implement it. |
615 break; | 615 break; |
616 } | 616 } |
617 } | 617 } |
618 } | 618 } |
619 | 619 |
620 // TODO(nona): Support item.children. | 620 // TODO(nona): Support item.children. |
621 } | 621 } |
622 | 622 |
623 } // namespace chromeos | 623 } // namespace chromeos |
OLD | NEW |