diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-02-04 22:37:57 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-02-04 22:37:57 +0000 |
commit | 0170a7666a43b14b9d3c1b0b1b733ad14b997316 (patch) | |
tree | 3033706a907f89858318dd381933ae80bf336cbe /gtk2_ardour/utils.cc | |
parent | 3ce593374063f0d9a7ad72503c09ed11a67278dc (diff) |
provide instructional hint for keyeditor; fix keybinding issues on OS X (needs current GTK patch); fix up packaging up OSX native to include VAMP plugins and put control surfaces in (mostly) the right places ; new (improved) arrow key bindings
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3007 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/utils.cc')
-rw-r--r-- | gtk2_ardour/utils.cc | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc index d0e85a4fa0..7a058b9ce5 100644 --- a/gtk2_ardour/utils.cc +++ b/gtk2_ardour/utils.cc @@ -460,42 +460,51 @@ key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev) it does allow. */ + int fakekey = GDK_VoidSymbol; int ret = false; switch (ev->keyval) { case GDK_Tab: - ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_nabla, GdkModifierType(ev->state)); - break; - - // some X and/or GDK implementations do Shift-Tab -> GDK_ISO_Left_Tab - case GDK_ISO_Left_Tab: - ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_nabla, GdkModifierType(ev->state)); + fakekey = GDK_nabla; break; case GDK_Up: - ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_uparrow, GdkModifierType(ev->state)); + fakekey = GDK_uparrow; break; case GDK_Down: - ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_downarrow, GdkModifierType(ev->state)); + fakekey = GDK_downarrow; break; case GDK_Right: - ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_rightarrow, GdkModifierType(ev->state)); + fakekey = GDK_rightarrow; break; case GDK_Left: - ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_leftarrow, GdkModifierType(ev->state)); + fakekey = GDK_leftarrow; break; default: break; } - if (ret) { - return true; + if (fakekey != GDK_VoidSymbol) { + ret = gtk_accel_groups_activate(G_OBJECT(win), fakekey, GdkModifierType(ev->state)); + + if (ret) { + return true; + } + +#ifdef GTKOSX + int oldval = ev->keyval; + ev->keyval = fakekey; + if (gdk_quartz_possibly_forward ((GdkEvent*) ev)) { + return true; + } + ev->keyval = oldval; } +#endif } /* consider all relevant modifiers but not LOCK or SHIFT */ |