Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(803)

Side by Side Diff: views/ime/input_method_ibus.cc

Issue 7942004: Consolidate/cleanup event cracking code; single out GdkEvents. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge removal of compact nav. Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « views/ime/input_method_gtk.cc ('k') | views/native_types.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "views/ime/input_method_ibus.h" 5 #include "views/ime/input_method_ibus.h"
6 6
7 #include <ibus.h> 7 #include <ibus.h>
8 8
9 #include <cstring> 9 #include <cstring>
10 #include <set> 10 #include <set>
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 (flags & ui::EF_LEFT_BUTTON_DOWN ? IBUS_BUTTON1_MASK : 0) | 55 (flags & ui::EF_LEFT_BUTTON_DOWN ? IBUS_BUTTON1_MASK : 0) |
56 (flags & ui::EF_MIDDLE_BUTTON_DOWN ? IBUS_BUTTON2_MASK : 0) | 56 (flags & ui::EF_MIDDLE_BUTTON_DOWN ? IBUS_BUTTON2_MASK : 0) |
57 (flags & ui::EF_RIGHT_BUTTON_DOWN ? IBUS_BUTTON3_MASK : 0); 57 (flags & ui::EF_RIGHT_BUTTON_DOWN ? IBUS_BUTTON3_MASK : 0);
58 } 58 }
59 59
60 void IBusKeyEventFromViewsKeyEvent(const views::KeyEvent& key, 60 void IBusKeyEventFromViewsKeyEvent(const views::KeyEvent& key,
61 guint32* ibus_keyval, 61 guint32* ibus_keyval,
62 guint32* ibus_keycode, 62 guint32* ibus_keycode,
63 guint32* ibus_state) { 63 guint32* ibus_state) {
64 #if defined(TOUCH_UI) 64 #if defined(TOUCH_UI)
65 if (key.native_event_2()) { 65 if (key.native_event()) {
66 XKeyEvent* x_key = reinterpret_cast<XKeyEvent*>(key.native_event_2()); 66 XKeyEvent* x_key = reinterpret_cast<XKeyEvent*>(key.native_event());
67 // Yes, ibus uses X11 keysym. We cannot use XLookupKeysym(), which doesn't 67 // Yes, ibus uses X11 keysym. We cannot use XLookupKeysym(), which doesn't
68 // translate Shift and CapsLock states. 68 // translate Shift and CapsLock states.
69 KeySym keysym = NoSymbol; 69 KeySym keysym = NoSymbol;
70 ::XLookupString(x_key, NULL, 0, &keysym, NULL); 70 ::XLookupString(x_key, NULL, 0, &keysym, NULL);
71 *ibus_keyval = keysym; 71 *ibus_keyval = keysym;
72 *ibus_keycode = x_key->keycode; 72 *ibus_keycode = x_key->keycode;
73 } 73 }
74 #elif defined(TOOLKIT_USES_GTK) 74 #elif defined(TOOLKIT_USES_GTK)
75 if (key.native_event()) { 75 if (key.gdk_event()) {
76 GdkEventKey* gdk_key = reinterpret_cast<GdkEventKey*>(key.native_event()); 76 GdkEventKey* gdk_key = reinterpret_cast<GdkEventKey*>(key.gdk_event());
77 *ibus_keyval = gdk_key->keyval; 77 *ibus_keyval = gdk_key->keyval;
78 *ibus_keycode = gdk_key->hardware_keycode; 78 *ibus_keycode = gdk_key->hardware_keycode;
79 } 79 }
80 #endif 80 #endif
81 else { 81 else {
82 // GdkKeyCodeForWindowsKeyCode() is actually nothing to do with Gtk, we 82 // GdkKeyCodeForWindowsKeyCode() is actually nothing to do with Gtk, we
83 // probably want to rename it to something like XKeySymForWindowsKeyCode(), 83 // probably want to rename it to something like XKeySymForWindowsKeyCode(),
84 // because Gtk keyval is actually same as X KeySym. 84 // because Gtk keyval is actually same as X KeySym.
85 *ibus_keyval = ui::GdkKeyCodeForWindowsKeyCode( 85 *ibus_keyval = ui::GdkKeyCodeForWindowsKeyCode(
86 key.key_code(), key.IsShiftDown() ^ key.IsCapsLockDown()); 86 key.key_code(), key.IsShiftDown() ^ key.IsCapsLockDown());
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 : input_method_(input_method), 216 : input_method_(input_method),
217 type_(key.type()), 217 type_(key.type()),
218 flags_(key.flags()), 218 flags_(key.flags()),
219 key_code_(key.key_code()), 219 key_code_(key.key_code()),
220 character_(key.GetCharacter()), 220 character_(key.GetCharacter()),
221 unmodified_character_(key.GetUnmodifiedCharacter()), 221 unmodified_character_(key.GetUnmodifiedCharacter()),
222 ibus_keyval_(ibus_keyval) { 222 ibus_keyval_(ibus_keyval) {
223 DCHECK(input_method_); 223 DCHECK(input_method_);
224 224
225 #if defined(TOUCH_UI) 225 #if defined(TOUCH_UI)
226 if (key.native_event_2()) 226 if (key.native_event())
227 x_event_ = *reinterpret_cast<XKeyEvent*>(key.native_event_2()); 227 x_event_ = *reinterpret_cast<XKeyEvent*>(key.native_event());
228 else 228 else
229 memset(&x_event_, 0, sizeof(x_event_)); 229 memset(&x_event_, 0, sizeof(x_event_));
230 #endif 230 #endif
231 } 231 }
232 232
233 InputMethodIBus::PendingKeyEvent::~PendingKeyEvent() { 233 InputMethodIBus::PendingKeyEvent::~PendingKeyEvent() {
234 if (input_method_) 234 if (input_method_)
235 input_method_->FinishPendingKeyEvent(this); 235 input_method_->FinishPendingKeyEvent(this);
236 } 236 }
237 237
238 void InputMethodIBus::PendingKeyEvent::ProcessPostIME(bool handled) { 238 void InputMethodIBus::PendingKeyEvent::ProcessPostIME(bool handled) {
239 if (!input_method_) 239 if (!input_method_)
240 return; 240 return;
241 241
242 #if defined(TOUCH_UI) 242 #if defined(TOUCH_UI)
243 if (x_event_.type == KeyPress || x_event_.type == KeyRelease) { 243 if (x_event_.type == KeyPress || x_event_.type == KeyRelease) {
244 Event::FromNativeEvent2 from_native; 244 KeyEvent key(reinterpret_cast<XEvent*>(&x_event_));
245 KeyEvent key(reinterpret_cast<XEvent*>(&x_event_), from_native);
246 input_method_->ProcessKeyEventPostIME(key, ibus_keyval_, handled); 245 input_method_->ProcessKeyEventPostIME(key, ibus_keyval_, handled);
247 return; 246 return;
248 } 247 }
249 #endif 248 #endif
250 KeyEvent key(type_, key_code_, flags_); 249 KeyEvent key(type_, key_code_, flags_);
251 if (key_code_ == ui::VKEY_UNKNOWN) { 250 if (key_code_ == ui::VKEY_UNKNOWN) {
252 key.set_character(character_); 251 key.set_character(character_);
253 key.set_unmodified_character(unmodified_character_); 252 key.set_unmodified_character(unmodified_character_);
254 } 253 }
255 input_method_->ProcessKeyEventPostIME(key, ibus_keyval_, handled); 254 input_method_->ProcessKeyEventPostIME(key, ibus_keyval_, handled);
(...skipping 756 matching lines...) Expand 10 before | Expand all | Expand 10 after
1012 DCHECK_EQ(GetIBus(), bus); 1011 DCHECK_EQ(GetIBus(), bus);
1013 DCHECK(data); 1012 DCHECK(data);
1014 IBusInputContext* ic = 1013 IBusInputContext* ic =
1015 ibus_bus_create_input_context_async_finish(bus, res, NULL); 1014 ibus_bus_create_input_context_async_finish(bus, res, NULL);
1016 if (ic) 1015 if (ic)
1017 data->StoreOrAbandonInputContext(ic); 1016 data->StoreOrAbandonInputContext(ic);
1018 delete data; 1017 delete data;
1019 } 1018 }
1020 1019
1021 } // namespace views 1020 } // namespace views
OLDNEW
« no previous file with comments | « views/ime/input_method_gtk.cc ('k') | views/native_types.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698