X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui_dependents.cc;h=9c6daa8952f724a439cfcbdb0894432cb0b94956;hb=aa60114843f4990ef93ba83974501495ddda358b;hp=0603fc6baa5acb95ee365736ac18eb2be21734c1;hpb=7ff370e79895d7eb293e7214689b791bd98415fb;p=ardour.git diff --git a/gtk2_ardour/ardour_ui_dependents.cc b/gtk2_ardour/ardour_ui_dependents.cc index 0603fc6baa..9c6daa8952 100644 --- a/gtk2_ardour/ardour_ui_dependents.cc +++ b/gtk2_ardour/ardour_ui_dependents.cc @@ -27,6 +27,7 @@ #include #include + #include "ardour_ui.h" #include "public_editor.h" #include "mixer_ui.h" @@ -57,6 +58,17 @@ void ARDOUR_UI::we_have_dependents () { setup_keybindings (); + editor->UpdateAllTransportClocks.connect (mem_fun (*this, &ARDOUR_UI::update_transport_clocks)); +} + +static void +accel_map_changed (GtkAccelMap* map, + gchar* path, + guint key, + GdkModifierType mod, + gpointer arg) +{ + static_cast(arg)->save_keybindings (); } void @@ -65,13 +77,20 @@ ARDOUR_UI::setup_keybindings () install_actions (); RedirectBox::register_actions (); - std::string key_binding_file = ARDOUR::find_config_file("ardour.bindings"); + cerr << "loading bindings from " << keybindings_path << endl; try { - AccelMap::load (key_binding_file); + AccelMap::load (keybindings_path); } catch (...) { - error << "ardour key bindings file not found" << endmsg; + error << string_compose (_("Ardour key bindings file not found at \"%1\" or contains errors."), keybindings_path) + << endmsg; } + + /* catch changes */ + + GtkAccelMap* accelmap = gtk_accel_map_get(); + g_signal_connect (accelmap, "changed", (GCallback) accel_map_changed, this); + } void @@ -79,6 +98,10 @@ ARDOUR_UI::connect_dependents_to_session (ARDOUR::Session *s) { editor->connect_to_session (s); mixer->connect_to_session (s); + + /* its safe to do this now */ + + s->restore_history (""); } void