diff options
author | tc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-11-19 20:31:06 +0000 |
---|---|---|
committer | tc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-11-19 20:31:06 +0000 |
commit | c8c6935dd3fc1797a02042b094a8c37ea9f05bb7 (patch) | |
tree | 4860d20cd6f8a302965091b5276bb3bde250dac4 /webkit/tools/test_shell/webwidget_host_gtk.cc | |
parent | 7e337ca029db1624254b49dc41560b00e5ca8c89 (diff) | |
download | chromium_src-c8c6935dd3fc1797a02042b094a8c37ea9f05bb7.zip chromium_src-c8c6935dd3fc1797a02042b094a8c37ea9f05bb7.tar.gz chromium_src-c8c6935dd3fc1797a02042b094a8c37ea9f05bb7.tar.bz2 |
fix losing focus on arrow keys and tab
Review URL: http://codereview.chromium.org/11488
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5707 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/tools/test_shell/webwidget_host_gtk.cc')
-rw-r--r-- | webkit/tools/test_shell/webwidget_host_gtk.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/webkit/tools/test_shell/webwidget_host_gtk.cc b/webkit/tools/test_shell/webwidget_host_gtk.cc index d469798..b62f912 100644 --- a/webkit/tools/test_shell/webwidget_host_gtk.cc +++ b/webkit/tools/test_shell/webwidget_host_gtk.cc @@ -57,6 +57,15 @@ gboolean KeyPressReleaseEvent(GtkWidget* widget, GdkEventKey* event, return FALSE; } +// This signal is called when arrow keys or tab is pressed. If we return true, +// we prevent focus from being moved to another widget. If we want to allow +// focus to be moved outside of web contents, we need to implement +// WebViewDelegate::TakeFocus in the test webview delegate. +gboolean FocusMove(GtkWidget* widget, GdkEventFocus* focus, + WebWidgetHost* host) { + return TRUE; +} + gboolean FocusIn(GtkWidget* widget, GdkEventFocus* focus, WebWidgetHost* host) { host->webwidget()->SetFocus(true); @@ -113,6 +122,7 @@ gfx::WindowHandle WebWidgetHost::CreateWindow(gfx::WindowHandle box, host); g_signal_connect(widget, "key-release-event", G_CALLBACK(KeyPressReleaseEvent), host); + g_signal_connect(widget, "focus", G_CALLBACK(FocusMove), host); g_signal_connect(widget, "focus-in-event", G_CALLBACK(FocusIn), host); g_signal_connect(widget, "focus-out-event", G_CALLBACK(FocusOut), host); g_signal_connect(widget, "button-press-event", |