diff --git a/gtk2_ardour/io_selector.cc b/gtk2_ardour/io_selector.cc index 81f39f27c5..2d910519b9 100644 --- a/gtk2_ardour/io_selector.cc +++ b/gtk2_ardour/io_selector.cc @@ -341,9 +341,8 @@ IOSelector::rescan () row[port_display_columns.full_name] = s->second; } - display->get_selection()->signal_changed().connect - (bind (mem_fun(*this, &IOSelector::port_selection_changed), display)); - + //display->get_selection()->signal_changed().connect (bind (mem_fun(*this, &IOSelector::port_selection_changed), display)); + display->signal_button_release_event().connect (bind (mem_fun(*this, &IOSelector::port_selection_changed), display)); Label *tab_label = manage (new Label); tab_label->set_name ("IOSelectorNotebookTab"); @@ -358,7 +357,7 @@ IOSelector::rescan () } notebook.set_current_page (current_page); - notebook.signal_show().connect (bind (mem_fun (notebook, &Notebook::set_current_page), current_page)); + //notebook.signal_show().connect (bind (mem_fun (notebook, &Notebook::set_current_page), current_page)); selector_box.show_all (); } @@ -426,15 +425,7 @@ IOSelector::display_ports () tview->set_name ("IOSelectorPortList"); port_box.pack_start (*tview); - //scroller = manage (new ScrolledWindow); - - //scroller->add (*tview); - //scroller->set_policy (POLICY_NEVER, POLICY_NEVER); - port_displays.insert (port_displays.end(), tview); - //port_box.pack_start (*scroller); - - //scroller->set_size_request (-1, 75); /* now fill the clist with the current connections */ @@ -475,7 +466,7 @@ IOSelector::display_ports () TreeViewColumn* col = tview->get_column (0); col->set_clickable (true); - //set_treeview_header_as_default_label(col); + /* handle button events on the column header and within the treeview itself */ //col->signal_button_release_event().connect (bind (mem_fun(*this, &IOSelector::port_column_button_release), tview)); @@ -508,18 +499,18 @@ IOSelector::display_ports () } } -void -IOSelector::port_selection_changed (TreeView* treeview) +bool +IOSelector::port_selection_changed (GdkEventButton *ev, TreeView* treeview) { TreeModel::iterator i = treeview->get_selection()->get_selected(); int status; if (!i) { - return; + return 0; } if (selected_port == 0) { - return; + return 0; } ustring other_port_name = (*i)[port_display_columns.full_name]; @@ -536,6 +527,9 @@ IOSelector::port_selection_changed (TreeView* treeview) if (status == 0) { select_next_treeview (); } + + treeview->get_selection()->unselect_all(); + return 0; } void diff --git a/gtk2_ardour/io_selector.h b/gtk2_ardour/io_selector.h index b3e3861279..1dd77dd5a1 100644 --- a/gtk2_ardour/io_selector.h +++ b/gtk2_ardour/io_selector.h @@ -112,7 +112,7 @@ class IOSelector : public Gtk::VBox { void rescan (); void clear_connections (); - void port_selection_changed(Gtk::TreeView*); + bool port_selection_changed(GdkEventButton *, Gtk::TreeView*); void ports_changed (ARDOUR::IOChange, void *); void name_changed (void*);