+/** @return height of a child region view, depending on stacked / overlaid mode */
+double
+StreamView::child_height () const
+{
+ if (_layer_display == Stacked) {
+ return height / _layers;
+ }
+
+ return height;
+}
+
+void
+StreamView::update_contents_height ()
+{
+ canvas_rect->property_y2() = height;
+
+ const double h = child_height ();
+
+ for (RegionViewList::iterator i = region_views.begin(); i != region_views.end(); ++i) {
+ switch (_layer_display) {
+ case Overlaid:
+ (*i)->set_y (0);
+ break;
+ case Stacked:
+ (*i)->set_y (height - ((*i)->region()->layer() + 1) * h);
+ break;
+ }
+
+ (*i)->set_height (h);
+ }
+
+ for (vector<RecBoxInfo>::iterator i = rec_rects.begin(); i != rec_rects.end(); ++i) {
+ i->rectangle->property_y2() = height - 1.0;
+ }
+}
+
+void
+StreamView::set_layer_display (LayerDisplay d)
+{
+ _layer_display = d;
+ update_contents_height ();
+ update_coverage_frames ();
+}
+
+void
+StreamView::update_coverage_frames ()
+{
+ for (RegionViewList::iterator i = region_views.begin (); i != region_views.end (); ++i) {
+ (*i)->update_coverage_frames (_layer_display);
+ }
+}