| Index: chrome/browser/ui/libgtk2ui/x11_input_method_context_impl_gtk2.cc
|
| diff --git a/chrome/browser/ui/libgtk2ui/x11_input_method_context_impl_gtk2.cc b/chrome/browser/ui/libgtk2ui/x11_input_method_context_impl_gtk2.cc
|
| index 948314e12901a4448f5766982ae958418b0333f0..dcf1116b410e426b2428aae85c8a37fbcab7e17d 100644
|
| --- a/chrome/browser/ui/libgtk2ui/x11_input_method_context_impl_gtk2.cc
|
| +++ b/chrome/browser/ui/libgtk2ui/x11_input_method_context_impl_gtk2.cc
|
| @@ -100,7 +100,8 @@ X11InputMethodContextImplGtk2::X11InputMethodContextImplGtk2(
|
| : delegate_(delegate),
|
| gtk_context_simple_(NULL),
|
| gtk_multicontext_(NULL),
|
| - gtk_context_(NULL) {
|
| + gtk_context_(NULL),
|
| + gdk_last_set_client_window_(NULL) {
|
| CHECK(delegate_);
|
|
|
| {
|
| @@ -165,7 +166,10 @@ bool X11InputMethodContextImplGtk2::DispatchKeyEvent(
|
| }
|
|
|
| // Set the client window and cursor location.
|
| - gtk_im_context_set_client_window(gtk_context_, event->key.window);
|
| + if (event->key.window != gdk_last_set_client_window_) {
|
| + gtk_im_context_set_client_window(gtk_context_, event->key.window);
|
| + gdk_last_set_client_window_ = event->key.window;
|
| + }
|
| // Convert the last known caret bounds relative to the screen coordinates
|
| // to a GdkRectangle relative to the client window.
|
| gint x = 0;
|
| @@ -195,6 +199,7 @@ void X11InputMethodContextImplGtk2::Reset() {
|
| gtk_im_context_reset(gtk_multicontext_);
|
| gtk_im_context_focus_out(gtk_context_simple_);
|
| gtk_im_context_focus_out(gtk_multicontext_);
|
| + gdk_last_set_client_window_ = NULL;
|
| }
|
|
|
| void X11InputMethodContextImplGtk2::OnTextInputTypeChanged(
|
|
|