correctly restore zoom focus state after restart (from nick mainsbridge)
[ardour.git] / gtk2_ardour / keyboard.cc
index bcdd551c0ab82a67e24de16b805aed5162dd2f8c..98ffab1160bb563fa2a2f5abf868062f6d10e281 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "ardour/filesystem_paths.h"
 
+#include "ardour_ui.h"
 #include "keyboard.h"
 #include "opts.h"
 
@@ -38,9 +39,11 @@ accel_map_changed (GtkAccelMap* /*map*/,
                   gchar* /*path*/,
                   guint /*key*/,
                   GdkModifierType /*mod*/,
-                  gpointer /*arg*/)
+                  gpointer keyboard)
 {
+       ArdourKeyboard* me = (ArdourKeyboard*)keyboard;
        Keyboard::keybindings_changed ();
+       me->ui.setup_tooltips ();
 }
 
 void
@@ -56,11 +59,7 @@ ArdourKeyboard::setup_keybindings ()
 
        /* set up the per-user bindings path */
 
-       strs.push_back (Glib::get_home_dir());
-       strs.push_back (".ardour3");
-       strs.push_back ("ardour.bindings");
-
-       user_keybindings_path = Glib::build_filename (strs);
+       user_keybindings_path = Glib::build_filename (user_config_directory(), "ardour.bindings");
 
        if (Glib::file_test (user_keybindings_path, Glib::FILE_TEST_EXISTS)) {
                std::pair<string,string> newpair;
@@ -122,14 +121,12 @@ ArdourKeyboard::setup_keybindings ()
                if (!Glib::path_is_absolute (keybindings_path)) {
 
                        /* not absolute - look in the usual places */
-                       sys::path keybindings_file;
-
-                       SearchPath spath = ardour_search_path() + user_config_directory() + system_config_search_path();
+                       std::string keybindings_file;
 
-                       if ( ! find_file_in_search_path (spath, keybindings_path, keybindings_file)) {
+                       if ( ! find_file_in_search_path (ardour_config_search_path(), keybindings_path, keybindings_file)) {
 
                                if (keybindings_path == default_bindings) {
-                                       error << _("Default keybindings not found - Ardour will be hard to use!") << endmsg;
+                                       error << string_compose (_("Default keybindings not found - %1 will be hard to use!"), PROGRAM_NAME) << endmsg;
                                        return;
                                } else {
                                        warning << string_compose (_("Key bindings file \"%1\" not found. Default bindings used instead"),
@@ -142,7 +139,7 @@ ArdourKeyboard::setup_keybindings ()
 
                                /* use it */
 
-                               keybindings_path = keybindings_file.to_string();
+                               keybindings_path = keybindings_file;
                                break;
 
                        }
@@ -153,7 +150,7 @@ ArdourKeyboard::setup_keybindings ()
 
                        if (!Glib::file_test (keybindings_path, Glib::FILE_TEST_EXISTS)) {
                                if (keybindings_path == default_bindings) {
-                                       error << _("Default keybindings not found - Ardour will be hard to use!") << endmsg;
+                                       error << string_compose (_("Default keybindings not found - %1 will be hard to use!"), PROGRAM_NAME) << endmsg;
                                        return;
                                } else {
                                        warning << string_compose (_("Key bindings file \"%1\" not found. Default bindings used instead"),
@@ -173,7 +170,7 @@ ArdourKeyboard::setup_keybindings ()
        /* catch changes */
 
        GtkAccelMap* accelmap = gtk_accel_map_get();
-       g_signal_connect (accelmap, "changed", (GCallback) accel_map_changed, 0);
+       g_signal_connect (accelmap, "changed", (GCallback) accel_map_changed, this);
 }
 
 Selection::Operation