summaryrefslogtreecommitdiffstats
path: root/webkit/tools/test_shell/webwidget_host_gtk.cc
diff options
context:
space:
mode:
authortc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-19 20:31:06 +0000
committertc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-19 20:31:06 +0000
commitc8c6935dd3fc1797a02042b094a8c37ea9f05bb7 (patch)
tree4860d20cd6f8a302965091b5276bb3bde250dac4 /webkit/tools/test_shell/webwidget_host_gtk.cc
parent7e337ca029db1624254b49dc41560b00e5ca8c89 (diff)
downloadchromium_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.cc10
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",