| OLD | NEW |
| 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 "chrome/browser/renderer_host/gtk_im_context_wrapper.h" | 5 #include "chrome/browser/renderer_host/gtk_im_context_wrapper.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 <gtk/gtk.h> | 9 #include <gtk/gtk.h> |
| 10 | 10 |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 | 218 |
| 219 if (!suppress) | 219 if (!suppress) |
| 220 host_view_->ForwardKeyboardEvent(wke); | 220 host_view_->ForwardKeyboardEvent(wke); |
| 221 } | 221 } |
| 222 | 222 |
| 223 last_key_code_ = key_code; | 223 last_key_code_ = key_code; |
| 224 last_key_was_up_ = (event->type == GDK_KEY_RELEASE); | 224 last_key_was_up_ = (event->type == GDK_KEY_RELEASE); |
| 225 last_key_filtered_no_result_ = (filtered && !has_result); | 225 last_key_filtered_no_result_ = (filtered && !has_result); |
| 226 } | 226 } |
| 227 | 227 |
| 228 void GtkIMContextWrapper::UpdateInputMethodState(WebKit::WebTextInputType type, | 228 void GtkIMContextWrapper::UpdateInputMethodState( |
| 229 const gfx::Rect& caret_rect) { | 229 ui::TextInputType type, |
| 230 bool can_compose_inline, |
| 231 const gfx::Rect& caret_rect) { |
| 230 suppress_next_commit_ = false; | 232 suppress_next_commit_ = false; |
| 231 | 233 |
| 232 // The renderer has updated its IME status. | 234 // The renderer has updated its IME status. |
| 233 // Control the GtkIMContext object according to this status. | 235 // Control the GtkIMContext object according to this status. |
| 234 if (!context_ || !is_focused_) | 236 if (!context_ || !is_focused_) |
| 235 return; | 237 return; |
| 236 | 238 |
| 237 DCHECK(!is_in_key_event_handler_); | 239 DCHECK(!is_in_key_event_handler_); |
| 238 | 240 |
| 239 bool is_enabled = (type == WebKit::WebTextInputTypeText); | 241 bool is_enabled = (type == ui::TEXT_INPUT_TYPE_TEXT); |
| 240 if (is_enabled_ != is_enabled) { | 242 if (is_enabled_ != is_enabled) { |
| 241 is_enabled_ = is_enabled; | 243 is_enabled_ = is_enabled; |
| 242 if (is_enabled) | 244 if (is_enabled) |
| 243 gtk_im_context_focus_in(context_); | 245 gtk_im_context_focus_in(context_); |
| 244 else | 246 else |
| 245 gtk_im_context_focus_out(context_); | 247 gtk_im_context_focus_out(context_); |
| 246 } | 248 } |
| 247 | 249 |
| 248 if (is_enabled) { | 250 if (is_enabled) { |
| 251 // If the focused element supports inline rendering of composition text, |
| 252 // we receive and send related events to it. Otherwise, the events related |
| 253 // to the updates of composition text are directed to the candidate window. |
| 254 gtk_im_context_set_use_preedit(context_, can_compose_inline); |
| 249 // Updates the position of the IME candidate window. | 255 // Updates the position of the IME candidate window. |
| 250 // The position sent from the renderer is a relative one, so we need to | 256 // The position sent from the renderer is a relative one, so we need to |
| 251 // attach the GtkIMContext object to this window before changing the | 257 // attach the GtkIMContext object to this window before changing the |
| 252 // position. | 258 // position. |
| 253 GdkRectangle cursor_rect(caret_rect.ToGdkRectangle()); | 259 GdkRectangle cursor_rect(caret_rect.ToGdkRectangle()); |
| 254 gtk_im_context_set_cursor_location(context_, &cursor_rect); | 260 gtk_im_context_set_cursor_location(context_, &cursor_rect); |
| 255 } | 261 } |
| 256 } | 262 } |
| 257 | 263 |
| 258 void GtkIMContextWrapper::OnFocusIn() { | 264 void GtkIMContextWrapper::OnFocusIn() { |
| (...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 626 | 632 |
| 627 void GtkIMContextWrapper::HandleHostViewRealizeThunk( | 633 void GtkIMContextWrapper::HandleHostViewRealizeThunk( |
| 628 GtkWidget* widget, GtkIMContextWrapper* self) { | 634 GtkWidget* widget, GtkIMContextWrapper* self) { |
| 629 self->HandleHostViewRealize(widget); | 635 self->HandleHostViewRealize(widget); |
| 630 } | 636 } |
| 631 | 637 |
| 632 void GtkIMContextWrapper::HandleHostViewUnrealizeThunk( | 638 void GtkIMContextWrapper::HandleHostViewUnrealizeThunk( |
| 633 GtkWidget* widget, GtkIMContextWrapper* self) { | 639 GtkWidget* widget, GtkIMContextWrapper* self) { |
| 634 self->HandleHostViewUnrealize(); | 640 self->HandleHostViewUnrealize(); |
| 635 } | 641 } |
| OLD | NEW |