summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_region_list.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/editor_region_list.cc')
-rw-r--r--gtk2_ardour/editor_region_list.cc60
1 files changed, 42 insertions, 18 deletions
diff --git a/gtk2_ardour/editor_region_list.cc b/gtk2_ardour/editor_region_list.cc
index 3e47d26cd6..e15ee6448c 100644
--- a/gtk2_ardour/editor_region_list.cc
+++ b/gtk2_ardour/editor_region_list.cc
@@ -38,6 +38,7 @@
#include "ardour_ui.h"
#include "gui_thread.h"
#include "actions.h"
+#include "region_view.h"
#include "utils.h"
#include "i18n.h"
@@ -89,10 +90,6 @@ Editor::add_region_to_region_display (boost::shared_ptr<Region> region)
Gdk::Color c;
bool missing_source;
- region_state_changed_connections.push_back (
- region->StateChanged.connect (bind (mem_fun (*this, &Editor::region_list_region_changed), boost::weak_ptr<Region> (region)))
- );
-
missing_source = boost::dynamic_pointer_cast<SilentFileSource>(region->source());
if (!show_automatic_regions_in_region_list && region->automatic()) {
@@ -309,13 +306,6 @@ Editor::redisplay_regions ()
{
if (session) {
- for (std::list<connection>::iterator i = region_state_changed_connections.begin();
- i != region_state_changed_connections.end();
- ++i)
- {
- i->disconnect ();
- }
-
region_list_display.set_model (Glib::RefPtr<Gtk::TreeStore>(0));
region_list_model->clear ();
@@ -419,6 +409,8 @@ Editor::region_list_display_button_press (GdkEventButton *ev)
int cellx;
int celly;
+ cerr << "Button press release, button = " << ev->button << endl;
+
if (region_list_display.get_path_at_pos ((int)ev->x, (int)ev->y, path, column, cellx, celly)) {
if ((iter = region_list_model->get_iter (path))) {
region = (*iter)[region_list_columns.region];
@@ -427,27 +419,25 @@ Editor::region_list_display_button_press (GdkEventButton *ev)
if (Keyboard::is_context_menu_event (ev)) {
show_region_list_display_context_menu (ev->button, ev->time);
+ cerr << "\tcontext menu event, event handled\n";
return true;
}
if (region == 0) {
+ cerr << "\tno region, event not handled\n";
return false;
}
switch (ev->button) {
case 1:
- /* audition on double click */
- if (ev->type == GDK_2BUTTON_PRESS) {
- consider_auditioning (region);
- return true;
- }
- return false;
break;
case 2:
- if (!Keyboard::modifier_state_equals (ev->state, Keyboard::Control)) {
+ // audition on middle click (stop audition too)
+ if (!Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
consider_auditioning (region);
}
+ cerr << "\taudition, event handled\n";
return true;
break;
@@ -455,6 +445,7 @@ Editor::region_list_display_button_press (GdkEventButton *ev)
break;
}
+ cerr << "\tnot handled\n";
return false;
}
@@ -674,6 +665,12 @@ Editor::region_list_display_drag_data_received (const RefPtr<Gdk::DragContext>&
{
vector<ustring> paths;
+ if (data.get_target() == "GTK_TREE_MODEL_ROW") {
+ cerr << "Delete drag data drop to treeview\n";
+ region_list_display.on_drag_data_received (context, x, y, data, info, time);
+ return;
+ }
+
if (convert_drop_to_paths (paths, context, x, y, data, info, time) == 0) {
nframes64_t pos = 0;
do_embed (paths, Editing::ImportDistinctFiles, ImportAsRegion, pos);
@@ -697,3 +694,30 @@ Editor::region_list_selection_filter (const RefPtr<TreeModel>& model, const Tree
return true;
}
+
+void
+Editor::region_name_edit (const Glib::ustring& path, const Glib::ustring& new_text)
+{
+ boost::shared_ptr<Region> region;
+ TreeIter iter;
+
+ if ((iter = region_list_model->get_iter (path))) {
+ region = (*iter)[region_list_columns.region];
+ (*iter)[region_list_columns.name] = new_text;
+ }
+
+ /* now mapover everything */
+
+ if (region) {
+ vector<RegionView*> equivalents;
+ get_regions_corresponding_to (region, equivalents);
+
+ for (vector<RegionView*>::iterator i = equivalents.begin(); i != equivalents.end(); ++i) {
+ if (new_text != (*i)->region()->name()) {
+ (*i)->region()->set_name (new_text);
+ }
+ }
+ }
+
+}
+