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/base/ime/ibus_client_impl.h" | 5 #include "ui/base/ime/ibus_client_impl.h" |
6 | 6 |
7 #include <ibus.h> | 7 #include <ibus.h> |
8 #include <X11/X.h> | 8 #include <X11/X.h> |
9 #include <X11/Xlib.h> | 9 #include <X11/Xlib.h> |
10 #undef FocusIn | 10 #undef FocusIn |
11 #undef FocusOut | 11 #undef FocusOut |
12 | 12 |
13 #include "base/basictypes.h" | 13 #include "base/basictypes.h" |
14 #include "base/i18n/char_iterator.h" | 14 #include "base/i18n/char_iterator.h" |
15 #include "base/logging.h" | 15 #include "base/logging.h" |
16 #include "base/utf_string_conversions.h" | 16 #include "base/utf_string_conversions.h" |
17 #include "ui/base/ime/composition_text.h" | 17 #include "ui/base/ime/composition_text.h" |
| 18 #include "ui/gfx/rect.h" |
18 | 19 |
19 // input_method_ibus.cc assumes X and IBus use the same mask for Lock, Control, | 20 // input_method_ibus.cc assumes X and IBus use the same mask for Lock, Control, |
20 // Shift, Alt, and buttons. Check if the assumption is really correct. | 21 // Shift, Alt, and buttons. Check if the assumption is really correct. |
21 COMPILE_ASSERT(IBUS_LOCK_MASK == LockMask, test_mask); | 22 COMPILE_ASSERT(IBUS_LOCK_MASK == LockMask, test_mask); |
22 COMPILE_ASSERT(IBUS_CONTROL_MASK == ControlMask, test_mask); | 23 COMPILE_ASSERT(IBUS_CONTROL_MASK == ControlMask, test_mask); |
23 COMPILE_ASSERT(IBUS_SHIFT_MASK == ShiftMask, test_mask); | 24 COMPILE_ASSERT(IBUS_SHIFT_MASK == ShiftMask, test_mask); |
24 COMPILE_ASSERT(IBUS_MOD1_MASK == Mod1Mask, test_mask); | 25 COMPILE_ASSERT(IBUS_MOD1_MASK == Mod1Mask, test_mask); |
25 COMPILE_ASSERT(IBUS_BUTTON1_MASK == Button1Mask, test_mask); | 26 COMPILE_ASSERT(IBUS_BUTTON1_MASK == Button1Mask, test_mask); |
26 COMPILE_ASSERT(IBUS_BUTTON2_MASK == Button2Mask, test_mask); | 27 COMPILE_ASSERT(IBUS_BUTTON2_MASK == Button2Mask, test_mask); |
27 COMPILE_ASSERT(IBUS_BUTTON3_MASK == Button3Mask, test_mask); | 28 COMPILE_ASSERT(IBUS_BUTTON3_MASK == Button3Mask, test_mask); |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 void IBusClientImpl::Reset(IBusInputContext* context) { | 119 void IBusClientImpl::Reset(IBusInputContext* context) { |
119 ibus_input_context_reset(context); | 120 ibus_input_context_reset(context); |
120 } | 121 } |
121 | 122 |
122 IBusClient::InputMethodType IBusClientImpl::GetInputMethodType() { | 123 IBusClient::InputMethodType IBusClientImpl::GetInputMethodType() { |
123 // This object cannot know the type of the current IME, hence return NORMAL. | 124 // This object cannot know the type of the current IME, hence return NORMAL. |
124 return INPUT_METHOD_NORMAL; | 125 return INPUT_METHOD_NORMAL; |
125 } | 126 } |
126 | 127 |
127 void IBusClientImpl::SetCursorLocation(IBusInputContext* context, | 128 void IBusClientImpl::SetCursorLocation(IBusInputContext* context, |
128 int32 x, | 129 const gfx::Rect& cursor_location, |
129 int32 y, | 130 const gfx::Rect& composition_head) { |
130 int32 w, | 131 ibus_input_context_set_cursor_location(context, |
131 int32 h) { | 132 cursor_location.x(), |
132 ibus_input_context_set_cursor_location(context, x, y, w, h); | 133 cursor_location.y(), |
| 134 cursor_location.width(), |
| 135 cursor_location.height()); |
133 } | 136 } |
134 | 137 |
135 void IBusClientImpl::SendKeyEvent(IBusInputContext* context, | 138 void IBusClientImpl::SendKeyEvent(IBusInputContext* context, |
136 uint32 keyval, | 139 uint32 keyval, |
137 uint32 keycode, | 140 uint32 keycode, |
138 uint32 state, | 141 uint32 state, |
139 PendingKeyEvent* pending_key) { | 142 PendingKeyEvent* pending_key) { |
140 // Note: | 143 // Note: |
141 // 1. We currently set timeout to -1, because ibus doesn't have a mechanism to | 144 // 1. We currently set timeout to -1, because ibus doesn't have a mechanism to |
142 // associate input method results to corresponding key event, thus there is | 145 // associate input method results to corresponding key event, thus there is |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 } | 244 } |
242 | 245 |
243 string16 IBusClientImpl::ExtractCommitText(IBusText* text) { | 246 string16 IBusClientImpl::ExtractCommitText(IBusText* text) { |
244 if (!text || !text->text) | 247 if (!text || !text->text) |
245 return WideToUTF16(L""); | 248 return WideToUTF16(L""); |
246 return UTF8ToUTF16(text->text); | 249 return UTF8ToUTF16(text->text); |
247 } | 250 } |
248 | 251 |
249 } // namespace internal | 252 } // namespace internal |
250 } // namespace ui | 253 } // namespace ui |
OLD | NEW |