X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_regions.cc;h=f406694e4d6df6e11d6fb2488dc3cfae5fe7e9c5;hb=5fef65538040fbac1b9edd1847a269aa925a49c9;hp=01b26705f51e4a2faf0161277f41b075654875b9;hpb=6fa6514cfdb0ce38d93b51197f599dfd091bad1d;p=ardour.git diff --git a/gtk2_ardour/editor_regions.cc b/gtk2_ardour/editor_regions.cc index 01b26705f5..f406694e4d 100644 --- a/gtk2_ardour/editor_regions.cc +++ b/gtk2_ardour/editor_regions.cc @@ -47,11 +47,13 @@ #include "utils.h" #include "editor_regions.h" #include "editor_drag.h" +#include "main_clock.h" #include "i18n.h" using namespace std; using namespace ARDOUR; +using namespace ARDOUR_UI_UTILS; using namespace PBD; using namespace Gtk; using namespace Glib; @@ -78,6 +80,7 @@ EditorRegions::EditorRegions (Editor* e) { _display.set_size_request (100, -1); _display.set_rules_hint (true); + _display.set_name ("EditGroupList"); /* Try to prevent single mouse presses from initiating edits. This relies on a hack in gtktreeview.c:gtk_treeview_button_press() @@ -112,7 +115,7 @@ EditorRegions::EditorRegions (Editor* e) { 3, _("Length"), _("Length of the region") }, { 4, _("Sync"), _("Position of region sync point, relative to start of the region") }, { 5, _("Fade In"), _("Length of region fade-in (units: secondary clock), () if disabled") }, - { 6, _("Fade Out"), _("Length of region fade-out (units: secondary clock), () if dsisabled") }, + { 6, _("Fade Out"), _("Length of region fade-out (units: secondary clock), () if disabled") }, { 7, _("L"), _("Region position locked?") }, { 8, _("G"), _("Region position glued to Bars|Beats time?") }, { 9, _("M"), _("Region muted?") }, @@ -292,7 +295,7 @@ EditorRegions::add_region (boost::shared_ptr region) string str; TreeModel::Row row; Gdk::Color c; - bool missing_source = boost::dynamic_pointer_cast(region->source()); + bool missing_source = boost::dynamic_pointer_cast(region->source()) != NULL; if (!_show_automatic_regions && region->automatic()) { return; @@ -338,14 +341,15 @@ EditorRegions::add_region (boost::shared_ptr region) row = *(_model->append()); if (missing_source) { - c.set_rgb(65535,0,0); // FIXME: error color from style + // c.set_rgb(65535,0,0); // FIXME: error color from style + set_color_from_rgba (c, ARDOUR_UI::config()->color ("region list missing source")); } else if (region->automatic()){ - c.set_rgb(0,65535,0); // FIXME: error color from style + // c.set_rgb(0,65535,0); // FIXME: error color from style + set_color_from_rgba (c, ARDOUR_UI::config()->color ("region list automatic")); } else { - set_color(c, rgba_from_style ("RegionListWholeFile", 0xff, 0, 0, 0, "fg", Gtk::STATE_NORMAL, false )); - + set_color_from_rgba (c, ARDOUR_UI::config()->color ("region list whole file")); } row[_columns.color_] = c; @@ -549,6 +553,7 @@ EditorRegions::selection_changed () for (TreeView::Selection::ListHandle_Path::iterator i = rows.begin(); i != rows.end(); ++i) { if ((iter = _model->get_iter (*i))) { + boost::shared_ptr region = (*iter)[_columns.region]; // they could have clicked on a row that is just a placeholder, like "Hidden" @@ -557,18 +562,12 @@ EditorRegions::selection_changed () if (region) { - if (region->automatic()) { - - _display.get_selection()->unselect(*i); - - } else { - _change_connection.block (true); - _editor->set_selected_regionview_from_region_list (region, Selection::Add); - - _change_connection.block (false); - } + _change_connection.block (true); + _editor->set_selected_regionview_from_region_list (region, Selection::Add); + _change_connection.block (false); } } + } } else { _editor->get_selection().clear_regions (); @@ -1118,7 +1117,7 @@ EditorRegions::sorter (TreeModel::iterator a, TreeModel::iterator b) switch (_sort_type) { case ByName: - cmp = strcasecmp (region1->name().c_str(), region2->name().c_str()); + cmp = region1->name().compare(region2->name()); break; case ByLength: @@ -1143,7 +1142,7 @@ EditorRegions::sorter (TreeModel::iterator a, TreeModel::iterator b) break; case BySourceFileName: - cmp = strcasecmp (region1->source()->name().c_str(), region2->source()->name().c_str()); + cmp = region1->source()->name().compare(region2->source()->name()); break; case BySourceFileLength: @@ -1156,9 +1155,9 @@ EditorRegions::sorter (TreeModel::iterator a, TreeModel::iterator b) case BySourceFileFS: if (region1->source()->name() == region2->source()->name()) { - cmp = strcasecmp (region1->name().c_str(), region2->name().c_str()); + cmp = region1->name().compare(region2->name()); } else { - cmp = strcasecmp (region1->source()->name().c_str(), region2->source()->name().c_str()); + cmp = region1->source()->name().compare(region2->source()->name()); } break; } @@ -1236,7 +1235,9 @@ EditorRegions::drag_data_received (const RefPtr& context, if (_editor->convert_drop_to_paths (paths, context, x, y, data, info, time) == 0) { framepos_t pos = 0; - if (Profile->get_sae() || Config->get_only_copy_imported_files()) { + bool copy = ((context->get_actions() & (Gdk::ACTION_COPY | Gdk::ACTION_LINK | Gdk::ACTION_MOVE)) == Gdk::ACTION_COPY); + + if (Profile->get_sae() || Config->get_only_copy_imported_files() || copy) { _editor->do_import (paths, Editing::ImportDistinctFiles, Editing::ImportAsRegion, SrcBest, pos); } else { _editor->do_embed (paths, Editing::ImportDistinctFiles, ImportAsRegion, pos); @@ -1298,7 +1299,7 @@ EditorRegions::name_edit (const std::string& path, const std::string& new_text) if (region) { vector equivalents; - _editor->get_regions_corresponding_to (region, equivalents); + _editor->get_regions_corresponding_to (region, equivalents, false); for (vector::iterator i = equivalents.begin(); i != equivalents.end(); ++i) { if (new_text != (*i)->region()->name()) { @@ -1560,7 +1561,7 @@ EditorRegions::sort_type_action (Editing::RegionListSortType t) const break; default: fatal << string_compose (_("programming error: %1: %2"), "EditorRegions: impossible sort type", (int) t) << endmsg; - /*NOTREACHED*/ + abort(); /*NOTREACHED*/ } RefPtr act = ActionManager::get_action (X_("RegionList"), action);