X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Ftransport_masters_dialog.cc;h=33d0ce5ca4fa0b4ba7c0e823f494bc7fa1cd29ba;hb=927a33c5f3a0f67adea222aad34bbf435c61f6ca;hp=ec2a028ba477d1adc6791c0a161f6176fdb51ef4;hpb=44cae0a62439d7f58a50920dcbd01f9f306ff1a2;p=ardour.git diff --git a/gtk2_ardour/transport_masters_dialog.cc b/gtk2_ardour/transport_masters_dialog.cc index ec2a028ba4..33d0ce5ca4 100644 --- a/gtk2_ardour/transport_masters_dialog.cc +++ b/gtk2_ardour/transport_masters_dialog.cc @@ -119,16 +119,27 @@ TransportMastersWidget::add_master () AddTransportMasterDialog d; d.present (); - int r = d.run (); + string name; - switch (r) { - case RESPONSE_ACCEPT: - break; - default: - return; + while (name.empty()) { + + int r = d.run (); + + switch (r) { + case RESPONSE_ACCEPT: + name = d.get_name(); + break; + default: + return; + } } - TransportMasterManager::instance().add (d.get_type(), d.get_name()); + d.hide (); + + if (TransportMasterManager::instance().add (d.get_type(), name)) { + MessageDialog msg (_("New transport master not added - check error log for details")); + msg.run (); + } } void @@ -202,7 +213,6 @@ TransportMastersWidget::rebuild () table.show_all (); - // r->label_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK); r->label_box.signal_button_press_event().connect (sigc::mem_fun (*r, &TransportMastersWidget::Row::name_press)); r->port_combo.signal_changed().connect (sigc::mem_fun (*r, &TransportMastersWidget::Row::port_choice_changed)); r->use_button.signal_toggled().connect (sigc::mem_fun (*r, &TransportMastersWidget::Row::use_button_toggled)); @@ -256,13 +266,11 @@ TransportMastersWidget::Row::name_press (GdkEventButton* ev) return false; } -gboolean -TransportMastersWidget::Row::_idle_remove (gpointer arg) +bool +TransportMastersWidget::idle_remove (TransportMastersWidget::Row* row) { - TransportMastersWidget::Row* row = (TransportMastersWidget::Row*) arg; TransportMasterManager::instance().remove (row->tm->name()); - - return FALSE; /* do not call again */ + return false; } void @@ -271,7 +279,7 @@ TransportMastersWidget::Row::remove_clicked () /* have to do this via an idle callback, because it will destroy the widget from which this callback was initiated. */ - g_idle_add_full (G_PRIORITY_HIGH_IDLE + 10, _idle_remove, this, NULL); + Glib::signal_idle().connect (sigc::bind (sigc::mem_fun (parent, &TransportMastersWidget::idle_remove), this)); } void @@ -612,6 +620,8 @@ TransportMastersWidget::AddTransportMasterDialog::AddTransportMasterDialog () type_label.show (); name_hbox.show (); type_hbox.show (); + + name_entry.signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &Gtk::Dialog::response), Gtk::RESPONSE_ACCEPT)); } string