summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2009-11-24 23:59:15 +0000
committerCarl Hetherington <carl@carlh.net>2009-11-24 23:59:15 +0000
commit2f1c664e4efb586e25f31dadea3a676c8890a472 (patch)
treecad3d475923788cf126e0751048e36d19f0123e3 /gtk2_ardour
parent9be0f1c4ed41c586f0ba04c2995acf9a7e3496cf (diff)
Fix for routes being renamed if you start editing their names but then change your mind. Don't allow name edit if rec-enabled (part of #2920)
git-svn-id: svn://localhost/ardour2/branches/3.0@6166 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor_routes.cc20
-rw-r--r--gtk2_ardour/editor_routes.h2
2 files changed, 14 insertions, 8 deletions
diff --git a/gtk2_ardour/editor_routes.cc b/gtk2_ardour/editor_routes.cc
index 8feebe9df3..914e8fa275 100644
--- a/gtk2_ardour/editor_routes.cc
+++ b/gtk2_ardour/editor_routes.cc
@@ -128,8 +128,13 @@ EditorRoutes::EditorRoutes (Editor* e)
_display.add_object_drag (_columns.route.index(), "routes");
CellRendererText* name_cell = dynamic_cast<CellRendererText*> (_display.get_column_cell_renderer (4));
-
assert (name_cell);
+
+ Gtk::TreeViewColumn* name_column = _display.get_column (4);
+ assert (name_column);
+
+ name_column->add_attribute (name_cell->property_editable(), _columns.name_editable);
+
name_cell->property_editable() = true;
name_cell->signal_edited().connect (mem_fun (*this, &EditorRoutes::name_edit));
@@ -160,6 +165,8 @@ EditorRoutes::on_tv_rec_enable_toggled (Glib::ustring const & path_string)
// Get the model row that has been toggled.
Gtk::TreeModel::Row row = *_model->get_iter (Gtk::TreeModel::Path (path_string));
+ row[_columns.name_editable] = !row[_columns.rec_enabled];
+
TimeAxisView *tv = row[_columns.tv];
AudioTimeAxisView *atv = dynamic_cast<AudioTimeAxisView*> (tv);
@@ -352,6 +359,7 @@ EditorRoutes::routes_added (list<RouteTimeAxisView*> routes)
}
}
+ update_rec_display ();
resume_redisplay ();
_redisplay_does_not_sync_order_keys = false;
}
@@ -889,12 +897,8 @@ EditorRoutes::update_rec_display ()
boost::shared_ptr<Route> route = (*i)[_columns.route];
if (boost::dynamic_pointer_cast<Track>(route)) {
-
- if (route->record_enabled()){
- (*i)[_columns.rec_enabled] = true;
- } else {
- (*i)[_columns.rec_enabled] = false;
- }
+ (*i)[_columns.rec_enabled] = route->record_enabled ();
+ (*i)[_columns.name_editable] = !route->record_enabled ();
}
}
}
@@ -968,7 +972,7 @@ EditorRoutes::name_edit (Glib::ustring const & path, Glib::ustring const & new_t
boost::shared_ptr<Route> route = (*iter)[_columns.route];
- if (route) {
+ if (route && route->name() != new_text) {
route->set_name (new_text);
}
}
diff --git a/gtk2_ardour/editor_routes.h b/gtk2_ardour/editor_routes.h
index 0a8947fdd1..880845ce38 100644
--- a/gtk2_ardour/editor_routes.h
+++ b/gtk2_ardour/editor_routes.h
@@ -94,6 +94,7 @@ private:
add (is_track);
add (tv);
add (route);
+ add (name_editable);
}
Gtk::TreeModelColumn<Glib::ustring> text;
@@ -104,6 +105,7 @@ private:
Gtk::TreeModelColumn<bool> is_track;
Gtk::TreeModelColumn<TimeAxisView*> tv;
Gtk::TreeModelColumn<boost::shared_ptr<ARDOUR::Route> > route;
+ Gtk::TreeModelColumn<bool> name_editable;
};
Gtk::ScrolledWindow _scroller;