From f844b2c2ab2fb54d3edc1e32366644071d68e688 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 8 May 2008 14:11:20 +0000 Subject: [PATCH] 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 --- gtk2_ardour/editor_route_list.cc | 1 - gtk2_ardour/keyeditor.cc | 3 ++ gtk2_ardour/utils.cc | 74 ++++++++++++++++++-------------- gtk2_ardour/utils.h | 1 + 4 files changed, 46 insertions(+), 33 deletions(-) diff --git a/gtk2_ardour/editor_route_list.cc b/gtk2_ardour/editor_route_list.cc index 94b541dc43..628df503d9 100644 --- a/gtk2_ardour/editor_route_list.cc +++ b/gtk2_ardour/editor_route_list.cc @@ -184,7 +184,6 @@ Editor::update_route_visibility () for (i = rows.begin(); i != rows.end(); ++i) { TimeAxisView *tv = (*i)[route_display_columns.tv]; - bool v = (*i)[route_display_columns.visible]; (*i)[route_display_columns.visible] = tv->marked_for_display (); } diff --git a/gtk2_ardour/keyeditor.cc b/gtk2_ardour/keyeditor.cc index cdac398a30..e44d92943f 100644 --- a/gtk2_ardour/keyeditor.cc +++ b/gtk2_ardour/keyeditor.cc @@ -16,6 +16,7 @@ #include "actions.h" #include "keyboard.h" #include "keyeditor.h" +#include "utils.h" #include "i18n.h" @@ -167,6 +168,8 @@ KeyEditor::on_key_release_event (GdkEventKey* ev) goto out; } + possibly_translate_keyval_to_make_legal_accelerator (ev->keyval); + bool result = AccelMap::change_entry (path, ev->keyval, (ModifierType) ev->state, 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; +} + diff --git a/gtk2_ardour/utils.h b/gtk2_ardour/utils.h index 4cf8fc371b..29c6bda403 100644 --- a/gtk2_ardour/utils.h +++ b/gtk2_ardour/utils.h @@ -76,6 +76,7 @@ bool canvas_item_visible (ArdourCanvas::Item* item); void set_color (Gdk::Color&, int); bool key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev); +bool possibly_translate_keyval_to_make_legal_accelerator (uint32_t& keyval); Glib::RefPtr get_xpm (std::string); Glib::RefPtr get_icon (const char*);