| Index: chrome/browser/ui/libgtkui/x11_input_method_context_impl_gtk.cc
|
| diff --git a/chrome/browser/ui/libgtkui/x11_input_method_context_impl_gtk.cc b/chrome/browser/ui/libgtkui/x11_input_method_context_impl_gtk.cc
|
| index 65bbe050e473fba18c3b4a86d3bf6cec1e8f6c1e..cfd6edec9c42abe451ebd15e10c3a89c281c5f90 100644
|
| --- a/chrome/browser/ui/libgtkui/x11_input_method_context_impl_gtk.cc
|
| +++ b/chrome/browser/ui/libgtkui/x11_input_method_context_impl_gtk.cc
|
| @@ -21,7 +21,9 @@
|
| #include "ui/base/ime/text_input_client.h"
|
| #include "ui/events/event.h"
|
| #include "ui/events/keycodes/keyboard_code_conversion_x.h"
|
| +#include "ui/gfx/geometry/dip_util.h"
|
| #include "ui/gfx/x/x11_types.h"
|
| +#include "ui/views/linux_ui/linux_ui.h"
|
|
|
| namespace libgtkui {
|
|
|
| @@ -81,9 +83,11 @@ bool X11InputMethodContextImplGtk2::DispatchKeyEvent(
|
| gint x = 0;
|
| gint y = 0;
|
| gdk_window_get_origin(event->key.window, &x, &y);
|
| - GdkRectangle rect = {last_caret_bounds_.x() - x, last_caret_bounds_.y() - y,
|
| - last_caret_bounds_.width(), last_caret_bounds_.height()};
|
| - gtk_im_context_set_cursor_location(gtk_context_, &rect);
|
| +
|
| + GdkRectangle gdk_rect = {
|
| + last_caret_bounds_.x() - x, last_caret_bounds_.y() - y,
|
| + last_caret_bounds_.width(), last_caret_bounds_.height()};
|
| + gtk_im_context_set_cursor_location(gtk_context_, &gdk_rect);
|
|
|
| const bool handled =
|
| gtk_im_context_filter_keypress(gtk_context_, &event->key);
|
| @@ -109,7 +113,12 @@ void X11InputMethodContextImplGtk2::SetCursorLocation(const gfx::Rect& rect) {
|
| // client window, which is unknown at this point. So we'll call
|
| // gtk_im_context_set_cursor_location() later in ProcessKeyEvent() where
|
| // (and only where) we know the client window.
|
| - last_caret_bounds_ = rect;
|
| + if (views::LinuxUI::instance()) {
|
| + last_caret_bounds_ = gfx::ConvertRectToPixel(
|
| + views::LinuxUI::instance()->GetDeviceScaleFactor(), rect);
|
| + } else {
|
| + last_caret_bounds_ = rect;
|
| + }
|
| }
|
|
|
| // private:
|
|
|