diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index f0919ee80e..6123b8fc18 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -611,6 +611,8 @@ Editor::Editor ()
selection->TimeChanged.connect (sigc::mem_fun(*this, &Editor::time_selection_changed));
selection->TracksChanged.connect (sigc::mem_fun(*this, &Editor::track_selection_changed));
+ ZoomChanged.connect (sigc::mem_fun (*this, &Editor::update_section_rects));
+
editor_regions_selection_changed_connection = selection->RegionsChanged.connect (sigc::mem_fun(*this, &Editor::region_selection_changed));
selection->PointsChanged.connect (sigc::mem_fun(*this, &Editor::point_selection_changed));
@@ -1433,6 +1435,10 @@ Editor::set_session (Session *t)
_session->auto_loop_location_changed.connect (_session_connections, invalidator (*this), boost::bind (&Editor::loop_location_changed, this, _1), gui_context ());
_session->history().Changed.connect (_session_connections, invalidator (*this), boost::bind (&Editor::history_changed, this), gui_context());
+ Location::start_changed.connect (_session_connections, invalidator (*this), boost::bind (&Editor::update_section_rects, this), gui_context ());
+ Location::end_changed.connect (_session_connections, invalidator (*this), boost::bind (&Editor::update_section_rects, this), gui_context ());
+ Location::flags_changed.connect (_session_connections, invalidator (*this), boost::bind (&Editor::update_section_rects, this), gui_context ());
+
_playhead_cursor->track_canvas_item().reparent ((ArdourCanvas::Item*) get_cursor_scroll_group());
_playhead_cursor->show ();
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 3685d838b0..9e708215ac 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -718,6 +718,7 @@ private:
void location_changed (ARDOUR::Location*);
void location_flags_changed (ARDOUR::Location*);
void refresh_location_display ();
+ void update_section_rects ();
void refresh_location_display_internal (const ARDOUR::Locations::LocationList&);
void add_new_location (ARDOUR::Location*);
ArdourCanvas::Container* add_new_location_internal (ARDOUR::Location*);
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc
index 48aed1c0b4..bd0e732b7f 100644
--- a/gtk2_ardour/editor_canvas.cc
+++ b/gtk2_ardour/editor_canvas.cc
@@ -171,7 +171,7 @@ Editor::initialize_canvas ()
tempo_meta_group = new ArdourCanvas::Container (_time_markers_group, ArdourCanvas::Duple (0.0, (timebar_height * 4.0) + 1.0));
CANVAS_DEBUG_NAME (tempo_meta_group, "tempo meta group");
section_marker_group = new ArdourCanvas::Container (_time_markers_group, ArdourCanvas::Duple (0.0, (timebar_height * 5.0) + 1.0));
- CANVAS_DEBUG_NAME (tempo_meta_group, "Arranger marker group");
+ CANVAS_DEBUG_NAME (section_marker_group, "Arranger marker group");
tempo_group = new ArdourCanvas::Container (tempo_meta_group, ArdourCanvas::Duple (0.0, 0.0));
CANVAS_DEBUG_NAME (tempo_group, "tempo group");
mapping_group = new ArdourCanvas::Container (tempo_meta_group, ArdourCanvas::Duple (0.0, 0.0));
@@ -1123,6 +1123,7 @@ Editor::color_handler()
rubberband_rect->set_fill_color (UIConfiguration::instance().color_mod ("rubber band rect", "selection rect"));
refresh_location_display ();
+ update_section_rects ();
NoteBase::set_colors ();
diff --git a/gtk2_ardour/editor_markers.cc b/gtk2_ardour/editor_markers.cc
index aef7730835..487dfc3aff 100644
--- a/gtk2_ardour/editor_markers.cc
+++ b/gtk2_ardour/editor_markers.cc
@@ -90,6 +90,10 @@ Editor::add_new_location (Location *location)
if (location->is_auto_loop()) {
update_loop_range_view ();
}
+
+ if (location->is_section ()) {
+ update_section_rects ();
+ }
}
/** Add a new location, without a time-consuming update of all marker labels;
@@ -610,6 +614,43 @@ Editor::refresh_location_display ()
update_marker_labels ();
}
+void
+Editor::update_section_rects ()
+{
+ ENSURE_GUI_THREAD (*this, &Editor::update_section_rects);
+ if (!_session) {
+ return;
+ }
+ section_marker_bar->clear (true);
+
+ timepos_t start;
+ timepos_t end;
+
+ Locations* loc = _session->locations ();
+ Location* l = NULL;
+ bool bright = false;
+
+ do {
+ l = loc->next_section (l, start, end);
+ if (l) {
+ double const left = sample_to_pixel (start.samples ());
+ double const right = sample_to_pixel (end.samples ());
+
+ ArdourCanvas::Rectangle* rect = new ArdourCanvas::Rectangle (section_marker_bar, ArdourCanvas::Rect (left, 2, right, timebar_height - 3));
+ rect->set_fill (true);
+ rect->set_outline_what(ArdourCanvas::Rectangle::What(0));
+ rect->raise_to_top ();
+ if (bright) {
+ rect->set_fill_color (UIConfiguration::instance().color ("arrangement rect"));
+ } else {
+ rect->set_fill_color (UIConfiguration::instance().color ("arrangement rect alt"));
+ }
+ bright = !bright;
+
+ }
+ } while (l);
+}
+
void
Editor::LocationMarkers::hide()
{
@@ -911,6 +952,10 @@ Editor::location_gone (Location *location)
break;
}
}
+
+ if (location->is_section ()) {
+ update_section_rects ();
+ }
}
void
diff --git a/gtk2_ardour/themes/blueberry_milk-ardour.colors b/gtk2_ardour/themes/blueberry_milk-ardour.colors
index fd9104c599..b394e6c536 100644
--- a/gtk2_ardour/themes/blueberry_milk-ardour.colors
+++ b/gtk2_ardour/themes/blueberry_milk-ardour.colors
@@ -51,6 +51,8 @@
+
+
diff --git a/gtk2_ardour/themes/caineville-ardour.colors b/gtk2_ardour/themes/caineville-ardour.colors
index cdde95d03f..ffd7d39575 100644
--- a/gtk2_ardour/themes/caineville-ardour.colors
+++ b/gtk2_ardour/themes/caineville-ardour.colors
@@ -52,6 +52,8 @@
+
+
diff --git a/gtk2_ardour/themes/clear_gray-ardour.colors b/gtk2_ardour/themes/clear_gray-ardour.colors
index 8f4ad4eb88..f29c95f195 100644
--- a/gtk2_ardour/themes/clear_gray-ardour.colors
+++ b/gtk2_ardour/themes/clear_gray-ardour.colors
@@ -52,6 +52,8 @@
+
+
diff --git a/gtk2_ardour/themes/cubasish-ardour.colors b/gtk2_ardour/themes/cubasish-ardour.colors
index 4fecb87ef0..ea0af1cb7a 100644
--- a/gtk2_ardour/themes/cubasish-ardour.colors
+++ b/gtk2_ardour/themes/cubasish-ardour.colors
@@ -52,6 +52,8 @@
+
+
diff --git a/gtk2_ardour/themes/dark-ardour.colors b/gtk2_ardour/themes/dark-ardour.colors
index e4288cfc25..477f739daf 100644
--- a/gtk2_ardour/themes/dark-ardour.colors
+++ b/gtk2_ardour/themes/dark-ardour.colors
@@ -53,6 +53,8 @@
+
+
diff --git a/gtk2_ardour/themes/diehard3-ardour.colors b/gtk2_ardour/themes/diehard3-ardour.colors
index b537fe6fa3..85ef9a182d 100644
--- a/gtk2_ardour/themes/diehard3-ardour.colors
+++ b/gtk2_ardour/themes/diehard3-ardour.colors
@@ -53,6 +53,8 @@
+
+
diff --git a/gtk2_ardour/themes/recbox-ardour.colors b/gtk2_ardour/themes/recbox-ardour.colors
index 8fe5f822ea..5b7473a5bb 100644
--- a/gtk2_ardour/themes/recbox-ardour.colors
+++ b/gtk2_ardour/themes/recbox-ardour.colors
@@ -53,6 +53,8 @@
+
+
diff --git a/gtk2_ardour/themes/unastudia-ardour.colors b/gtk2_ardour/themes/unastudia-ardour.colors
index c0f47062f8..cbabe96b6a 100644
--- a/gtk2_ardour/themes/unastudia-ardour.colors
+++ b/gtk2_ardour/themes/unastudia-ardour.colors
@@ -50,7 +50,9 @@
-
+
+
+
diff --git a/gtk2_ardour/themes/xcolors-ardour.colors b/gtk2_ardour/themes/xcolors-ardour.colors
index c4ba12fa99..490781ad22 100644
--- a/gtk2_ardour/themes/xcolors-ardour.colors
+++ b/gtk2_ardour/themes/xcolors-ardour.colors
@@ -52,6 +52,8 @@
+
+