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

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

Issue 8563001: tiny clean-up: Rename functions to make it clear that they don't depend on Views (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review Created 9 years, 1 month 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 | « no previous file | no next file » | 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 #if defined(TOUCH_UI) 8 #if defined(TOUCH_UI)
9 #include <X11/Xlib.h> 9 #include <X11/Xlib.h>
10 #include <X11/Xutil.h> 10 #include <X11/Xutil.h>
11 #endif 11 #endif
12 12
13 #include <algorithm> 13 #include <algorithm>
14 #include <cstring> 14 #include <cstring>
15 #include <set> 15 #include <set>
16 #include <vector> 16 #include <vector>
17 17
18 #include "base/command_line.h" 18 #include "base/command_line.h"
19 #include "base/basictypes.h" 19 #include "base/basictypes.h"
20 #include "base/i18n/char_iterator.h" 20 #include "base/i18n/char_iterator.h"
21 #include "base/logging.h" 21 #include "base/logging.h"
22 #include "base/string_util.h" 22 #include "base/string_util.h"
23 #include "base/third_party/icu/icu_utf.h" 23 #include "base/third_party/icu/icu_utf.h"
24 #include "base/utf_string_conversions.h" 24 #include "base/utf_string_conversions.h"
25 #include "ui/base/keycodes/keyboard_codes.h" 25 #include "ui/base/keycodes/keyboard_codes.h"
26 #include "ui/gfx/point.h"
27 #include "ui/gfx/rect.h"
26 #include "views/events/event.h" 28 #include "views/events/event.h"
27 #include "views/widget/widget.h" 29 #include "views/widget/widget.h"
28 30
29 #if defined(USE_AURA) || defined(TOUCH_UI) 31 #if defined(USE_AURA) || defined(TOUCH_UI)
30 #include "ui/base/keycodes/keyboard_code_conversion_x.h" 32 #include "ui/base/keycodes/keyboard_code_conversion_x.h"
31 #elif defined(TOOLKIT_USES_GTK) 33 #elif defined(TOOLKIT_USES_GTK)
32 #include "ui/base/keycodes/keyboard_code_conversion_gtk.h" 34 #include "ui/base/keycodes/keyboard_code_conversion_gtk.h"
33 #endif 35 #endif
34 36
35 namespace { 37 namespace {
36 38
37 // A global flag to switch the InputMethod implementation to InputMethodIBus 39 // A global flag to switch the InputMethod implementation to InputMethodIBus
38 bool inputmethod_ibus_enabled = false; 40 bool inputmethod_ibus_enabled = false;
39 41
40 // Converts ibus key state flags to Views event flags. 42 // Converts ibus key state flags to event flags.
41 int ViewsFlagsFromIBusState(guint32 state) { 43 int EventFlagsFromIBusState(guint32 state) {
42 return (state & IBUS_LOCK_MASK ? ui::EF_CAPS_LOCK_DOWN : 0) | 44 return (state & IBUS_LOCK_MASK ? ui::EF_CAPS_LOCK_DOWN : 0) |
43 (state & IBUS_CONTROL_MASK ? ui::EF_CONTROL_DOWN : 0) | 45 (state & IBUS_CONTROL_MASK ? ui::EF_CONTROL_DOWN : 0) |
44 (state & IBUS_SHIFT_MASK ? ui::EF_SHIFT_DOWN : 0) | 46 (state & IBUS_SHIFT_MASK ? ui::EF_SHIFT_DOWN : 0) |
45 (state & IBUS_MOD1_MASK ? ui::EF_ALT_DOWN : 0) | 47 (state & IBUS_MOD1_MASK ? ui::EF_ALT_DOWN : 0) |
46 (state & IBUS_BUTTON1_MASK ? ui::EF_LEFT_BUTTON_DOWN : 0) | 48 (state & IBUS_BUTTON1_MASK ? ui::EF_LEFT_BUTTON_DOWN : 0) |
47 (state & IBUS_BUTTON2_MASK ? ui::EF_MIDDLE_BUTTON_DOWN : 0) | 49 (state & IBUS_BUTTON2_MASK ? ui::EF_MIDDLE_BUTTON_DOWN : 0) |
48 (state & IBUS_BUTTON3_MASK ? ui::EF_RIGHT_BUTTON_DOWN : 0); 50 (state & IBUS_BUTTON3_MASK ? ui::EF_RIGHT_BUTTON_DOWN : 0);
49 } 51 }
50 52
51 // Converts Views event flags to ibus key state flags. 53 // Converts event flags to ibus key state flags.
52 guint32 IBusStateFromViewsFlags(int flags) { 54 guint32 IBusStateFromEventFlags(int flags) {
53 return (flags & ui::EF_CAPS_LOCK_DOWN ? IBUS_LOCK_MASK : 0) | 55 return (flags & ui::EF_CAPS_LOCK_DOWN ? IBUS_LOCK_MASK : 0) |
54 (flags & ui::EF_CONTROL_DOWN ? IBUS_CONTROL_MASK : 0) | 56 (flags & ui::EF_CONTROL_DOWN ? IBUS_CONTROL_MASK : 0) |
55 (flags & ui::EF_SHIFT_DOWN ? IBUS_SHIFT_MASK : 0) | 57 (flags & ui::EF_SHIFT_DOWN ? IBUS_SHIFT_MASK : 0) |
56 (flags & ui::EF_ALT_DOWN ? IBUS_MOD1_MASK : 0) | 58 (flags & ui::EF_ALT_DOWN ? IBUS_MOD1_MASK : 0) |
57 (flags & ui::EF_LEFT_BUTTON_DOWN ? IBUS_BUTTON1_MASK : 0) | 59 (flags & ui::EF_LEFT_BUTTON_DOWN ? IBUS_BUTTON1_MASK : 0) |
58 (flags & ui::EF_MIDDLE_BUTTON_DOWN ? IBUS_BUTTON2_MASK : 0) | 60 (flags & ui::EF_MIDDLE_BUTTON_DOWN ? IBUS_BUTTON2_MASK : 0) |
59 (flags & ui::EF_RIGHT_BUTTON_DOWN ? IBUS_BUTTON3_MASK : 0); 61 (flags & ui::EF_RIGHT_BUTTON_DOWN ? IBUS_BUTTON3_MASK : 0);
60 } 62 }
61 63
62 void IBusKeyEventFromViewsKeyEvent(const views::KeyEvent& key, 64 void IBusKeyEventFromViewsKeyEvent(const views::KeyEvent& key,
(...skipping 24 matching lines...) Expand all
87 GdkEventKey* gdk_key = reinterpret_cast<GdkEventKey*>(key.gdk_event()); 89 GdkEventKey* gdk_key = reinterpret_cast<GdkEventKey*>(key.gdk_event());
88 *ibus_keyval = gdk_key->keyval; 90 *ibus_keyval = gdk_key->keyval;
89 *ibus_keycode = gdk_key->hardware_keycode; 91 *ibus_keycode = gdk_key->hardware_keycode;
90 } else { 92 } else {
91 *ibus_keyval = ui::GdkKeyCodeForWindowsKeyCode( 93 *ibus_keyval = ui::GdkKeyCodeForWindowsKeyCode(
92 key.key_code(), key.IsShiftDown() ^ key.IsCapsLockDown()); 94 key.key_code(), key.IsShiftDown() ^ key.IsCapsLockDown());
93 *ibus_keycode = 0; 95 *ibus_keycode = 0;
94 } 96 }
95 #endif 97 #endif
96 98
97 *ibus_state = IBusStateFromViewsFlags(key.flags()); 99 *ibus_state = IBusStateFromEventFlags(key.flags());
98 if (key.type() == ui::ET_KEY_RELEASED) 100 if (key.type() == ui::ET_KEY_RELEASED)
99 *ibus_state |= IBUS_RELEASE_MASK; 101 *ibus_state |= IBUS_RELEASE_MASK;
100 } 102 }
101 103
102 void ExtractCompositionTextFromIBusPreedit(IBusText* text, 104 void ExtractCompositionTextFromIBusPreedit(IBusText* text,
103 guint cursor_position, 105 guint cursor_position,
104 ui::CompositionText* composition) { 106 ui::CompositionText* composition) {
105 composition->Clear(); 107 composition->Clear();
106 composition->text = UTF8ToUTF16(text->text); 108 composition->text = UTF8ToUTF16(text->text);
107 109
(...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 // then it means the key event didn't generate any result text. So we need 695 // then it means the key event didn't generate any result text. So we need
694 // to send corresponding character to the focused text input client. 696 // to send corresponding character to the focused text input client.
695 697
696 ui::TextInputClient* client = GetTextInputClient(); 698 ui::TextInputClient* client = GetTextInputClient();
697 char16 ch = key.GetCharacter(); 699 char16 ch = key.GetCharacter();
698 if (ch && client) 700 if (ch && client)
699 client->InsertChar(ch, key.flags()); 701 client->InsertChar(ch, key.flags());
700 } 702 }
701 703
702 void InputMethodIBus::ProcessInputMethodResult(const KeyEvent& key, 704 void InputMethodIBus::ProcessInputMethodResult(const KeyEvent& key,
703 bool filtered) { 705 bool handled) {
704 ui::TextInputClient* client = GetTextInputClient(); 706 ui::TextInputClient* client = GetTextInputClient();
705 DCHECK(client); 707 DCHECK(client);
706 708
707 if (result_text_.length()) { 709 if (result_text_.length()) {
708 if (filtered && NeedInsertChar()) { 710 if (handled && NeedInsertChar()) {
709 for (string16::const_iterator i = result_text_.begin(); 711 for (string16::const_iterator i = result_text_.begin();
710 i != result_text_.end(); ++i) { 712 i != result_text_.end(); ++i) {
711 client->InsertChar(*i, key.flags()); 713 client->InsertChar(*i, key.flags());
712 } 714 }
713 } else { 715 } else {
714 client->InsertText(result_text_); 716 client->InsertText(result_text_);
715 composing_text_ = false; 717 composing_text_ = false;
716 } 718 }
717 } 719 }
718 720
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 key_code = ui::KeyboardCodeFromXKeysym(keyval); 803 key_code = ui::KeyboardCodeFromXKeysym(keyval);
802 #elif defined(TOOLKIT_USES_GTK) 804 #elif defined(TOOLKIT_USES_GTK)
803 key_code = ui::WindowsKeyCodeForGdkKeyCode(keyval); 805 key_code = ui::WindowsKeyCodeForGdkKeyCode(keyval);
804 #endif 806 #endif
805 807
806 if (!key_code) 808 if (!key_code)
807 return; 809 return;
808 810
809 KeyEvent key(state & IBUS_RELEASE_MASK ? 811 KeyEvent key(state & IBUS_RELEASE_MASK ?
810 ui::ET_KEY_RELEASED : ui::ET_KEY_PRESSED, 812 ui::ET_KEY_RELEASED : ui::ET_KEY_PRESSED,
811 key_code, ViewsFlagsFromIBusState(state)); 813 key_code, EventFlagsFromIBusState(state));
812 814
813 // It is not clear when the input method will forward us a fake key event. 815 // It is not clear when the input method will forward us a fake key event.
814 // If there is a pending key event, then we may already received some input 816 // If there is a pending key event, then we may already received some input
815 // method results, so we dispatch this fake key event directly rather than 817 // method results, so we dispatch this fake key event directly rather than
816 // calling ProcessKeyEventPostIME(), which will clear pending input method 818 // calling ProcessKeyEventPostIME(), which will clear pending input method
817 // results. 819 // results.
818 if (key.type() == ui::ET_KEY_PRESSED) 820 if (key.type() == ui::ET_KEY_PRESSED)
819 ProcessUnfilteredKeyPressEvent(key, keyval); 821 ProcessUnfilteredKeyPressEvent(key, keyval);
820 else 822 else
821 DispatchKeyEventPostIME(key); 823 DispatchKeyEventPostIME(key);
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
950 DCHECK_EQ(GetIBus(), bus); 952 DCHECK_EQ(GetIBus(), bus);
951 DCHECK(data); 953 DCHECK(data);
952 IBusInputContext* ic = 954 IBusInputContext* ic =
953 ibus_bus_create_input_context_async_finish(bus, res, NULL); 955 ibus_bus_create_input_context_async_finish(bus, res, NULL);
954 if (ic) 956 if (ic)
955 data->StoreOrAbandonInputContext(ic); 957 data->StoreOrAbandonInputContext(ic);
956 delete data; 958 delete data;
957 } 959 }
958 960
959 } // namespace views 961 } // namespace views
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698