Index: chrome/browser/ui/views/dropdown_bar_host_gtk.cc |
diff --git a/chrome/browser/ui/views/dropdown_bar_host_gtk.cc b/chrome/browser/ui/views/dropdown_bar_host_gtk.cc |
index 2a4e4befd896b3a66e2d7da003cf75e138c3464f..b321c30219e76f853df85c543c8edbd9950c4d06 100644 |
--- a/chrome/browser/ui/views/dropdown_bar_host_gtk.cc |
+++ b/chrome/browser/ui/views/dropdown_bar_host_gtk.cc |
@@ -11,6 +11,10 @@ |
#include "views/widget/widget_gtk.h" |
#include "views/controls/textfield/textfield.h" |
+#if defined(TOUCH_UI) |
+#include "app/keyboard_code_conversion_gtk.h" |
+#endif |
+ |
views::Widget* DropdownBarHost::CreateHost() { |
views::WidgetGtk* host = new views::WidgetGtk(views::WidgetGtk::TYPE_CHILD); |
// We own the host. |
@@ -27,5 +31,22 @@ void DropdownBarHost::SetWidgetPositionNative(const gfx::Rect& new_pos, |
NativeWebKeyboardEvent DropdownBarHost::GetKeyboardEvent( |
const TabContents* contents, |
const views::Textfield::Keystroke& key_stroke) { |
+#if defined(TOUCH_UI) |
+ // TODO(oshima): This is a copy from |
+ // RenderWidgetHostViewViews::OnKeyPressed(). |
+ // Refactor and eliminate the dup code. |
+ const views::KeyEvent& e = key_stroke.key_event(); |
+ NativeWebKeyboardEvent wke; |
+ wke.type = WebKit::WebInputEvent::KeyDown; |
+ wke.windowsKeyCode = e.GetKeyCode(); |
+ wke.setKeyIdentifierFromWindowsKeyCode(); |
+ |
+ wke.text[0] = wke.unmodifiedText[0] = |
+ static_cast<unsigned short>(gdk_keyval_to_unicode( |
+ app::GdkKeyCodeForWindowsKeyCode(e.GetKeyCode(), |
+ e.IsShiftDown() ^ e.IsCapsLockDown()))); |
+ return wke; |
+#else |
return NativeWebKeyboardEvent(key_stroke.event()); |
+#endif |
} |