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

Side by Side Diff: branches/1916/src/chrome/browser/ui/libgtk2ui/x11_input_method_context_impl_gtk2.cc

Issue 253183002: Revert 266967 "Merge 266651 "linux-aura: Supports Compose key wi..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 7 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
OLDNEW
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/ui/libgtk2ui/x11_input_method_context_impl_gtk2.h" 5 #include "chrome/browser/ui/libgtk2ui/x11_input_method_context_impl_gtk2.h"
6 6
7 #include <gdk/gdk.h> 7 #include <gdk/gdk.h>
8 #include <gdk/gdkkeysyms.h> 8 #include <gdk/gdkkeysyms.h>
9 #include <gdk/gdkx.h> 9 #include <gdk/gdkx.h>
10 10
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 92
93 } // namespace 93 } // namespace
94 94
95 namespace libgtk2ui { 95 namespace libgtk2ui {
96 96
97 X11InputMethodContextImplGtk2::X11InputMethodContextImplGtk2( 97 X11InputMethodContextImplGtk2::X11InputMethodContextImplGtk2(
98 ui::LinuxInputMethodContextDelegate* delegate) 98 ui::LinuxInputMethodContextDelegate* delegate)
99 : delegate_(delegate), 99 : delegate_(delegate),
100 gtk_context_simple_(NULL), 100 gtk_context_simple_(NULL),
101 gtk_multicontext_(NULL), 101 gtk_multicontext_(NULL),
102 gtk_context_(NULL), 102 gtk_context_(NULL) {
103 gdk_last_set_client_window_(NULL) {
104 CHECK(delegate_); 103 CHECK(delegate_);
105 104
106 { 105 {
107 XModifierKeymap* keymap = XGetModifierMapping( 106 XModifierKeymap* keymap = XGetModifierMapping(
108 base::MessagePumpForUI::GetDefaultXDisplay()); 107 base::MessagePumpForUI::GetDefaultXDisplay());
109 for (int i = 0; i < 8 * keymap->max_keypermod; ++i) { 108 for (int i = 0; i < 8 * keymap->max_keypermod; ++i) {
110 if (keymap->modifiermap[i]) 109 if (keymap->modifiermap[i])
111 modifier_keycodes_.insert(keymap->modifiermap[i]); 110 modifier_keycodes_.insert(keymap->modifiermap[i]);
112 } 111 }
113 XFreeModifiermap(keymap); 112 XFreeModifiermap(keymap);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 const base::NativeEvent& native_key_event = key_event.native_event(); 158 const base::NativeEvent& native_key_event = key_event.native_event();
160 GdkEvent* event = GdkEventFromXKeyEvent( 159 GdkEvent* event = GdkEventFromXKeyEvent(
161 native_key_event->xkey, 160 native_key_event->xkey,
162 IsKeycodeModifierKey(native_key_event->xkey.keycode)); 161 IsKeycodeModifierKey(native_key_event->xkey.keycode));
163 if (!event) { 162 if (!event) {
164 LOG(ERROR) << "Cannot translate a XKeyEvent to a GdkEvent."; 163 LOG(ERROR) << "Cannot translate a XKeyEvent to a GdkEvent.";
165 return false; 164 return false;
166 } 165 }
167 166
168 // Set the client window and cursor location. 167 // Set the client window and cursor location.
169 if (event->key.window != gdk_last_set_client_window_) { 168 gtk_im_context_set_client_window(gtk_context_, event->key.window);
170 gtk_im_context_set_client_window(gtk_context_, event->key.window);
171 gdk_last_set_client_window_ = event->key.window;
172 }
173 // Convert the last known caret bounds relative to the screen coordinates 169 // Convert the last known caret bounds relative to the screen coordinates
174 // to a GdkRectangle relative to the client window. 170 // to a GdkRectangle relative to the client window.
175 gint x = 0; 171 gint x = 0;
176 gint y = 0; 172 gint y = 0;
177 gdk_window_get_origin(event->key.window, &x, &y); 173 gdk_window_get_origin(event->key.window, &x, &y);
178 GdkRectangle rect = {last_caret_bounds_.x() - x, 174 GdkRectangle rect = {last_caret_bounds_.x() - x,
179 last_caret_bounds_.y() - y, 175 last_caret_bounds_.y() - y,
180 last_caret_bounds_.width(), 176 last_caret_bounds_.width(),
181 last_caret_bounds_.height()}; 177 last_caret_bounds_.height()};
182 gtk_im_context_set_cursor_location(gtk_context_, &rect); 178 gtk_im_context_set_cursor_location(gtk_context_, &rect);
183 179
184 // Let an IME handle the key event. 180 // Let an IME handle the key event.
185 commit_signal_trap_.StartTrap(event->key.keyval); 181 commit_signal_trap_.StartTrap(event->key.keyval);
186 const gboolean handled = gtk_im_context_filter_keypress(gtk_context_, 182 const gboolean handled = gtk_im_context_filter_keypress(gtk_context_,
187 &event->key); 183 &event->key);
188 commit_signal_trap_.StopTrap(); 184 commit_signal_trap_.StopTrap();
189 gdk_event_free(event); 185 gdk_event_free(event);
190 186
191 return handled && !commit_signal_trap_.IsSignalCaught(); 187 return handled && !commit_signal_trap_.IsSignalCaught();
192 } 188 }
193 189
194 void X11InputMethodContextImplGtk2::Reset() { 190 void X11InputMethodContextImplGtk2::Reset() {
195 // Reset all the states of the context, not only preedit, caret but also 191 // Reset all the states of the context, not only preedit, caret but also
196 // focus. 192 // focus.
197 gtk_context_ = NULL; 193 gtk_context_ = NULL;
198 gtk_im_context_reset(gtk_context_simple_); 194 gtk_im_context_reset(gtk_context_simple_);
199 gtk_im_context_reset(gtk_multicontext_); 195 gtk_im_context_reset(gtk_multicontext_);
200 gtk_im_context_focus_out(gtk_context_simple_); 196 gtk_im_context_focus_out(gtk_context_simple_);
201 gtk_im_context_focus_out(gtk_multicontext_); 197 gtk_im_context_focus_out(gtk_multicontext_);
202 gdk_last_set_client_window_ = NULL;
203 } 198 }
204 199
205 void X11InputMethodContextImplGtk2::OnTextInputTypeChanged( 200 void X11InputMethodContextImplGtk2::OnTextInputTypeChanged(
206 ui::TextInputType text_input_type) { 201 ui::TextInputType text_input_type) {
207 switch (text_input_type) { 202 switch (text_input_type) {
208 case ui::TEXT_INPUT_TYPE_NONE: 203 case ui::TEXT_INPUT_TYPE_NONE:
209 case ui::TEXT_INPUT_TYPE_PASSWORD: 204 case ui::TEXT_INPUT_TYPE_PASSWORD:
210 gtk_context_ = gtk_context_simple_; 205 gtk_context_ = gtk_context_simple_;
211 break; 206 break;
212 default: 207 default:
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 text.length() == 1 && 302 text.length() == 1 &&
308 text[0] == gdk_keyval_to_unicode(gdk_event_key_keyval_)) { 303 text[0] == gdk_keyval_to_unicode(gdk_event_key_keyval_)) {
309 is_signal_caught_ = true; 304 is_signal_caught_ = true;
310 return true; 305 return true;
311 } else { 306 } else {
312 return false; 307 return false;
313 } 308 }
314 } 309 }
315 310
316 } // namespace libgtk2ui 311 } // namespace libgtk2ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698