diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-05-08 14:11:20 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-05-08 14:11:20 +0000 |
commit | f844b2c2ab2fb54d3edc1e32366644071d68e688 (patch) | |
tree | 43b69d60e63afb3043db8412bce9f319c225ac15 /gtk2_ardour/utils.cc | |
parent | 15d6871c02b5daa518910807263a1c18a46c7870 (diff) |
allow keybindings manager to bind arrow keys, using hack from utils.cc that was already in place
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3328 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/utils.cc')
-rw-r--r-- | gtk2_ardour/utils.cc | 74 |
1 files changed, 42 insertions, 32 deletions
diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc index 68b5768ded..ae3d3947f7 100644 --- a/gtk2_ardour/utils.cc +++ b/gtk2_ardour/utils.cc @@ -466,39 +466,10 @@ key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev) it does allow. */ - int fakekey = GDK_VoidSymbol; - int ret = false; + uint32_t fakekey = ev->keyval; - switch (ev->keyval) { - case GDK_Tab: - case GDK_ISO_Left_Tab: - fakekey = GDK_nabla; - break; - - case GDK_Up: - fakekey = GDK_uparrow; - break; - - case GDK_Down: - fakekey = GDK_downarrow; - break; - - case GDK_Right: - fakekey = GDK_rightarrow; - break; - - case GDK_Left: - fakekey = GDK_leftarrow; - break; - - default: - break; - } - - if (fakekey != GDK_VoidSymbol) { - ret = gtk_accel_groups_activate(G_OBJECT(win), fakekey, GdkModifierType(ev->state)); - - if (ret) { + if (possibly_translate_keyval_to_make_legal_accelerator (fakekey)) { + if (gtk_accel_groups_activate(G_OBJECT(win), fakekey, GdkModifierType(ev->state))) { return true; } @@ -724,3 +695,42 @@ reset_dpi () DPIReset();//Emit Signal } +bool +possibly_translate_keyval_to_make_legal_accelerator (uint32_t& keyval) +{ + int fakekey = GDK_VoidSymbol; + + switch (keyval) { + case GDK_Tab: + case GDK_ISO_Left_Tab: + fakekey = GDK_nabla; + break; + + case GDK_Up: + fakekey = GDK_uparrow; + break; + + case GDK_Down: + fakekey = GDK_downarrow; + break; + + case GDK_Right: + fakekey = GDK_rightarrow; + break; + + case GDK_Left: + fakekey = GDK_leftarrow; + break; + + default: + break; + } + + if (fakekey != GDK_VoidSymbol) { + keyval = fakekey; + return true; + } + + return false; +} + |