summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_route_list.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/editor_route_list.cc')
-rw-r--r--gtk2_ardour/editor_route_list.cc72
1 files changed, 38 insertions, 34 deletions
diff --git a/gtk2_ardour/editor_route_list.cc b/gtk2_ardour/editor_route_list.cc
index b700f9e469..c422a43859 100644
--- a/gtk2_ardour/editor_route_list.cc
+++ b/gtk2_ardour/editor_route_list.cc
@@ -41,6 +41,7 @@ using namespace sigc;
using namespace ARDOUR;
using namespace PBD;
using namespace Gtk;
+using namespace Glib;
void
@@ -70,7 +71,7 @@ Editor::handle_new_route (Session::RouteList& routes)
tv = new MidiTimeAxisView (*this, *session, route, track_canvas);
else
throw unknown_type();
-
+ //cerr << "Editor::handle_new_route() called on " << route->name() << endl;//DEBUG
#if 0
if (route_display_model->children().size() == 0) {
@@ -155,42 +156,10 @@ Editor::remove_route (TimeAxisView *tv)
{
ENSURE_GUI_THREAD(bind (mem_fun(*this, &Editor::remove_route), tv));
+ TrackViewList::iterator i;
TreeModel::Children rows = route_display_model->children();
TreeModel::Children::iterator ri;
- /* find the track view that's being deleted */
- TrackViewList::iterator i = find (track_views.begin(), track_views.end(), tv);
-
- /* set up `nearby' to be a suitable nearby track to select once
- this one has gone */
- TrackViewList::iterator nearby = track_views.end ();
- if (i != track_views.end()) {
-
- nearby = i;
-
- if (nearby != track_views.begin()) {
- /* go to the previous track if there is one */
- nearby--;
- } else {
- /* otherwise the next track */
- nearby++;
- }
-
- /* and remove the track view that's going */
- track_views.erase (i);
-
- if (nearby != track_views.end()) {
- /* we've got another track to select, so select it */
- set_selected_track (**nearby, Selection::Set);
- } else {
- /* we've got no other track, so the editor mixer will disappear */
- editor_mixer_button.set_active (false);
- ActionManager::uncheck_toggleaction ("<Actions>/Editor/show-editor-mixer");
- editor_mixer_button.set_sensitive (false);
- editor_list_button.set_sensitive (false);
- }
- }
-
/* Decrement old order keys for tracks `above' the one that is being removed */
for (ri = rows.begin(); ri != rows.end(); ++ri) {
TimeAxisView* v = (*ri)[route_display_columns.tv];
@@ -205,6 +174,23 @@ Editor::remove_route (TimeAxisView *tv)
break;
}
}
+
+ if ((i = find (track_views.begin(), track_views.end(), tv)) != track_views.end()) {
+ track_views.erase (i);
+ }
+
+ /* since the editor mixer goes away when you remove a route, set the
+ * button to inactive and untick the menu option
+ */
+
+ editor_mixer_button.set_active(false);
+ ActionManager::uncheck_toggleaction ("<Actions>/Editor/show-editor-mixer");
+
+ /* and disable if all tracks and/or routes are gone */
+
+ if (track_views.size() == 0) {
+ editor_mixer_button.set_sensitive(false);
+ }
}
void
@@ -609,3 +595,21 @@ Editor::route_list_delete (const Gtk::TreeModel::Path& path)
session->set_remote_control_ids();
redisplay_route_list ();
}
+
+
+void
+Editor::route_list_display_drag_data_received (const RefPtr<Gdk::DragContext>& context,
+ int x, int y,
+ const SelectionData& data,
+ guint info, guint time)
+{
+ cerr << "RouteLD::dddr target = " << data.get_target() << endl;
+
+ if (data.get_target() == "GTK_TREE_MODEL_ROW") {
+ cerr << "Delete drag data drop to treeview\n";
+ route_list_display.on_drag_data_received (context, x, y, data, info, time);
+ return;
+ }
+ cerr << "some other kind of drag\n";
+ context->drag_finish (true, false, time);
+}