| 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 "views/ime/input_method_gtk.h" | 5 #include "views/ime/input_method_gtk.h" |
| 6 | 6 |
| 7 #include <gdk/gdk.h> | 7 #include <gdk/gdk.h> |
| 8 #include <gdk/gdkkeysyms.h> | 8 #include <gdk/gdkkeysyms.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 if (!GetTextInputClient()) { | 120 if (!GetTextInputClient()) { |
| 121 DispatchKeyEventPostIME(key); | 121 DispatchKeyEventPostIME(key); |
| 122 return; | 122 return; |
| 123 } | 123 } |
| 124 | 124 |
| 125 handling_key_event_ = true; | 125 handling_key_event_ = true; |
| 126 composition_changed_ = false; | 126 composition_changed_ = false; |
| 127 result_text_.clear(); | 127 result_text_.clear(); |
| 128 | 128 |
| 129 // If it's a fake key event, then we need to synthesize a GdkEventKey. | 129 // If it's a fake key event, then we need to synthesize a GdkEventKey. |
| 130 GdkEvent* event = key.native_event() ? key.native_event() : | 130 GdkEvent* event = key.gdk_event() ? key.gdk_event() : |
| 131 SynthesizeGdkEventKey(key); | 131 SynthesizeGdkEventKey(key); |
| 132 gboolean filtered = gtk_im_context_filter_keypress( | 132 gboolean filtered = gtk_im_context_filter_keypress( |
| 133 context_focused_ ? context_ : context_simple_, &event->key); | 133 context_focused_ ? context_ : context_simple_, &event->key); |
| 134 | 134 |
| 135 handling_key_event_ = false; | 135 handling_key_event_ = false; |
| 136 | 136 |
| 137 const View* old_focused_view = focused_view(); | 137 const View* old_focused_view = focused_view(); |
| 138 if (key.type() == ui::ET_KEY_PRESSED && filtered) | 138 if (key.type() == ui::ET_KEY_PRESSED && filtered) |
| 139 ProcessFilteredKeyPressEvent(key); | 139 ProcessFilteredKeyPressEvent(key); |
| 140 | 140 |
| 141 // Ensure no focus change from processing the key event. | 141 // Ensure no focus change from processing the key event. |
| 142 if (old_focused_view == focused_view()) { | 142 if (old_focused_view == focused_view()) { |
| 143 if (HasInputMethodResult()) | 143 if (HasInputMethodResult()) |
| 144 ProcessInputMethodResult(key, filtered); | 144 ProcessInputMethodResult(key, filtered); |
| 145 // Ensure no focus change sending input method results to the focused View. | 145 // Ensure no focus change sending input method results to the focused View. |
| 146 if (old_focused_view == focused_view()) { | 146 if (old_focused_view == focused_view()) { |
| 147 if (key.type() == ui::ET_KEY_PRESSED && !filtered) | 147 if (key.type() == ui::ET_KEY_PRESSED && !filtered) |
| 148 ProcessUnfilteredKeyPressEvent(key); | 148 ProcessUnfilteredKeyPressEvent(key); |
| 149 else if (key.type() == ui::ET_KEY_RELEASED) | 149 else if (key.type() == ui::ET_KEY_RELEASED) |
| 150 DispatchKeyEventPostIME(key); | 150 DispatchKeyEventPostIME(key); |
| 151 } | 151 } |
| 152 } | 152 } |
| 153 | 153 |
| 154 // Free the synthesized event if there was no underlying native event. | 154 // Free the synthesized event if there was no underlying native event. |
| 155 if (event != key.native_event()) | 155 if (event != key.gdk_event()) |
| 156 gdk_event_free(event); | 156 gdk_event_free(event); |
| 157 } | 157 } |
| 158 | 158 |
| 159 void InputMethodGtk::OnTextInputTypeChanged(View* view) { | 159 void InputMethodGtk::OnTextInputTypeChanged(View* view) { |
| 160 if (IsViewFocused(view)) { | 160 if (IsViewFocused(view)) { |
| 161 DCHECK(!composing_text_); | 161 DCHECK(!composing_text_); |
| 162 UpdateContextFocusState(); | 162 UpdateContextFocusState(); |
| 163 } | 163 } |
| 164 InputMethodBase::OnTextInputTypeChanged(view); | 164 InputMethodBase::OnTextInputTypeChanged(view); |
| 165 } | 165 } |
| (...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 441 gtk_im_context_set_client_window(context_simple_, widget->window); | 441 gtk_im_context_set_client_window(context_simple_, widget->window); |
| 442 } | 442 } |
| 443 } | 443 } |
| 444 | 444 |
| 445 void InputMethodGtk::OnWidgetUnrealize(GtkWidget* widget) { | 445 void InputMethodGtk::OnWidgetUnrealize(GtkWidget* widget) { |
| 446 gtk_im_context_set_client_window(context_, NULL); | 446 gtk_im_context_set_client_window(context_, NULL); |
| 447 gtk_im_context_set_client_window(context_simple_, NULL); | 447 gtk_im_context_set_client_window(context_simple_, NULL); |
| 448 } | 448 } |
| 449 | 449 |
| 450 } // namespace views | 450 } // namespace views |
| OLD | NEW |