Comment #20 on issue 11480 by [email protected]: Support GTK keyboard
themes (emacs keybindings)
http://code.google.com/p/chromium/issues/detail?id=11480
The following revision refers to this bug:
http://src.chromium.org/viewvc/chrome?view=rev&revision=25852
------------------------------------------------------------------------
r25852 | [email protected] | 2009-09-10 00:22:48 -0700 (Thu, 10 Sep 2009)
| 21 lines
Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/gtk_im_context_wrapper.cc?r1=25852&r2=25851
A
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/gtk_key_bindings_handler.cc
A
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/gtk_key_bindings_handler.h
A
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/gtk_key_bindings_handler_unittest.cc
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/render_view_host.cc?r1=25852&r2=25851
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/render_view_host.h?r1=25852&r2=25851
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/render_widget_host.cc?r1=25852&r2=25851
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/render_widget_host.h?r1=25852&r2=25851
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/render_widget_host_view_gtk.cc?r1=25852&r2=25851
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/render_widget_host_view_gtk.h?r1=25852&r2=25851
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome.gyp?r1=25852&r2=25851
A
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/edit_command.h
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/render_messages.h?r1=25852&r2=25851
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/render_messages_internal.h?r1=25852&r2=25851
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/render_view.cc?r1=25852&r2=25851
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/render_view.h?r1=25852&r2=25851
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/render_widget.cc?r1=25852&r2=25851
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/render_widget.h?r1=25852&r2=25851
A
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/gtk_key_bindings_test_gtkrc
M
http://src.chromium.org/viewvc/chrome/trunk/src/webkit/glue/editor_client_impl.cc?r1=25852&r2=25851
M
http://src.chromium.org/viewvc/chrome/trunk/src/webkit/glue/webview_delegate.h?r1=25852&r2=25851
M
http://src.chromium.org/viewvc/chrome/trunk/src/webkit/glue/webview_impl.cc?r1=25852&r2=25851
Supports Gtk keyboard themes.
This CL fixes issue 11480: Support GTK keyboard themes (emacs keybindings).
A new class GtkKeyBindingsHandler has been added, which matches a key event
against key bindings defined in current Gtk keyboard theme.
A new render message ViewMsg_SetEditCommandsForNextKeyEvent has been added
for sending edit commands associated to a key event to renderer. This
message shall be sent just before sending the key event. RenderView will
handle this event and cache the edit commands until the key event is
processed.
When processing the key event, EditClientImpl::handleKeyboardEvent() will
eventually be called to handle the key event, if it's not handled by DOM
and the focus is inside an input box. Then a newly added method
WebViewDelegate::ExecuteEditCommandsForCurrentKeyEvent(), which is
implemented in RenderView, will be called by
EditClientImpl::handleKeyboardEvent() to execute edit commands previously
sent from browser by ViewMsg_SetEditCommandsForNextKeyEvent message. If
WebViewDelegate::ExecuteEditCommandsForCurrentKeyEvent() returns false,
which means the key event doesn't have edit command associated,
EditClientImpl will handle the key event with built-in logic, which may
trigger a built-in key binding.
With this approach, system defined key bindings always have higher priority
than built-in key bindings defined in editor_client_impl.cc.
Known issue:
If a key event matches not only a system defined key binding but also an
accesskey of a DOM element, then both corresponding edit commands and
accesskey action will be executed. Because accesskey is handled in
WebViewImpl::CharEvent(), while edit commands are bound to RawKeyDown or
KeyUp events.
BUG=11480 "Support GTK keyboard themes (emacs keybindings)"
TEST=Switch to Emacs keyboard theme by changing the value of gconf key
"/desktop/gnome/interface/gtk_key_theme" to "Emacs", then starts chrome and
opens a webpage with a text input box. Input something into the text box,
then
press any of the Emacs key bindings defined in
/usr/share/themes/Emacs/gtk-2.0-key/gtkrc, to see if it works as expected.
For
example, ctrl-p should move the cursor up one line, and ctrl-k should
delete to
the end of paragraph.
Review URL: http://codereview.chromium.org/165293
------------------------------------------------------------------------
--
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings
--~--~---------~--~----~------------~-------~--~----~
Automated mail from issue updates at http://crbug.com/
Subscription options: http://groups.google.com/group/chromium-bugs
-~----------~----~----~----~------~----~------~--~---