[Webkit-unassigned] [Bug 28257] [Gtk] Doesn't support gtk-key-themes
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Mon Dec 21 15:13:01 PST 2009
https://bugs.webkit.org/show_bug.cgi?id=28257
--- Comment #4 from Randal Barlow <email.tehk at gmail.com> 2009-12-21 15:13:01 PST ---
(From update of attachment 45343)
>diff -rupN original/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp new/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp
>--- original/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp 2009-11-12 16:40:58.000000000 -0500
>+++ new/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp 2009-12-21 15:00:49.818888011 -0500
>@@ -31,6 +31,7 @@
> #include "FocusController.h"
> #include "Frame.h"
> #include <glib.h>
>+#include <gtk/gtk.h>
> #include "KeyboardCodes.h"
> #include "KeyboardEvent.h"
> #include "NotImplemented.h"
>@@ -371,7 +372,10 @@ struct KeyPressEntry {
> const char* name;
> };
>
>-static const KeyDownEntry keyDownEntries[] = {
>+/*
>+Standard gtk-key-theme
>+*/
>+static const KeyDownEntry stdkeyDownEntries[] = {
> { VK_LEFT, 0, "MoveLeft" },
> { VK_LEFT, ShiftKey, "MoveLeftAndModifySelection" },
> { VK_LEFT, CtrlKey, "MoveWordLeft" },
>@@ -417,6 +421,64 @@ static const KeyDownEntry keyDownEntries
> { VK_RETURN, AltKey | ShiftKey, "InsertNewline" },
> };
>
>+/*
>+Emacs gtk-key-theme
>+*/
>+static const KeyDownEntry emacskeyDownEntries[] = {
>+ { VK_LEFT, 0, "MoveLeft" },
>+ { VK_LEFT, ShiftKey, "MoveLeftAndModifySelection" },
>+ { VK_LEFT, CtrlKey, "MoveWordLeft" },
>+ { VK_LEFT, CtrlKey | ShiftKey, "MoveWordLeftAndModifySelection" },
>+ { VK_RIGHT, 0, "MoveRight" },
>+ { VK_RIGHT, ShiftKey, "MoveRightAndModifySelection" },
>+ { VK_RIGHT, CtrlKey, "MoveWordRight" },
>+ { VK_RIGHT, CtrlKey | ShiftKey, "MoveWordRightAndModifySelection" },
>+ { VK_UP, 0, "MoveUp" },
>+ { VK_UP, ShiftKey, "MoveUpAndModifySelection" },
>+ { VK_PRIOR, ShiftKey, "MovePageUpAndModifySelection" },
>+ { VK_DOWN, 0, "MoveDown" },
>+ { VK_DOWN, ShiftKey, "MoveDownAndModifySelection" },
>+ { VK_NEXT, ShiftKey, "MovePageDownAndModifySelection" },
>+ { VK_PRIOR, 0, "MovePageUp" },
>+ { VK_NEXT, 0, "MovePageDown" },
>+ { VK_HOME, 0, "MoveToBeginningOfLine" },
>+ { VK_HOME, ShiftKey, "MoveToBeginningOfLineAndModifySelection" },
>+ { VK_HOME, CtrlKey, "MoveToBeginningOfDocument" },
>+ { VK_HOME, CtrlKey | ShiftKey, "MoveToBeginningOfDocumentAndModifySelection" },
>+
>+ { VK_END, 0, "MoveToEndOfLine" },
>+ { VK_END, ShiftKey, "MoveToEndOfLineAndModifySelection" },
>+ { VK_END, CtrlKey, "MoveToEndOfDocument" },
>+ { VK_END, CtrlKey | ShiftKey, "MoveToEndOfDocumentAndModifySelection" },
>+
>+ { VK_BACK, 0, "DeleteBackward" },
>+ { VK_BACK, ShiftKey, "DeleteBackward" },
>+ { VK_DELETE, 0, "DeleteForward" },
>+ { VK_BACK, CtrlKey, "DeleteWordBackward" },
>+ { VK_DELETE, CtrlKey, "DeleteWordForward" },
>+
>+ { 'B', CtrlKey, "ToggleBold" },
>+ { 'I', CtrlKey, "ToggleItalic" },
>+
>+ { VK_ESCAPE, 0, "Cancel" },
>+ { VK_OEM_PERIOD, CtrlKey, "Cancel" },
>+ { VK_TAB, 0, "InsertTab" },
>+ { VK_TAB, ShiftKey, "InsertBacktab" },
>+ { VK_RETURN, 0, "InsertNewline" },
>+ { VK_RETURN, CtrlKey, "InsertNewline" },
>+ { VK_RETURN, AltKey, "InsertNewline" },
>+ { VK_RETURN, AltKey | ShiftKey, "InsertNewline" },
>+ // Emacs key theme text control
>+ { VK_K, CtrlKey, "DeleteToEndOfLine" },
>+ { VK_F, CtrlKey, "MoveForward" },
>+ { VK_B, CtrlKey, "MoveBackward" },
>+ { VK_W, CtrlKey, "DeleteWordBackward" },
>+ { VK_D, CtrlKey, "DeleteForward" },
>+ { VK_A, CtrlKey, "MoveToBeginningOfLine" },
>+ { VK_E, CtrlKey, "MoveToEndOfLine" },
>+};
>+
>+
> static const KeyPressEntry keyPressEntries[] = {
> { '\t', 0, "InsertTab" },
> { '\t', ShiftKey, "InsertBacktab" },
>@@ -436,9 +498,22 @@ static const char* interpretEditorComman
> if (!keyDownCommandsMap) {
> keyDownCommandsMap = new HashMap<int, const char*>;
> keyPressCommandsMap = new HashMap<int, const char*>;
>-
>- for (unsigned i = 0; i < G_N_ELEMENTS(keyDownEntries); i++)
>- keyDownCommandsMap->set(keyDownEntries[i].modifiers << 16 | keyDownEntries[i].virtualKey, keyDownEntries[i].name);
>+
>+ // get the gtk key theme
>+ GtkSettings* settings = gtk_settings_get_default();
>+ gchar* key_theme_name;
>+ g_object_get(settings, "gtk-key-theme-name", &key_theme_name, NULL);
>+
>+ if (strcmp(key_theme_name, "Emacs") == 0)
>+ {
>+ for (unsigned i = 0; i < G_N_ELEMENTS(emacskeyDownEntries); i++)
>+ keyDownCommandsMap->set(emacskeyDownEntries[i].modifiers << 16 | emacskeyDownEntries[i].virtualKey, emacskeyDownEntries[i].name);
>+ }
>+ else
>+ {
>+ for (unsigned i = 0; i < G_N_ELEMENTS(stdkeyDownEntries); i++)
>+ keyDownCommandsMap->set(stdkeyDownEntries[i].modifiers << 16 | stdkeyDownEntries[i].virtualKey, stdkeyDownEntries[i].name);
>+ }
>
> for (unsigned i = 0; i < G_N_ELEMENTS(keyPressEntries); i++)
> keyPressCommandsMap->set(keyPressEntries[i].modifiers << 16 | keyPressEntries[i].charCode, keyPressEntries[i].name);
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list