diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc index db5c609e7c..162ddaaf54 100644 --- a/gtk2_ardour/audio_region_view.cc +++ b/gtk2_ardour/audio_region_view.cc @@ -1419,7 +1419,7 @@ AudioRegionView::set_one_waveform_color (ArdourCanvas::WaveView* wave) { ArdourCanvas::Color fill; ArdourCanvas::Color outline; - + if (_selected) { if (_region->muted()) { /* hide outline with zero alpha */ @@ -1428,6 +1428,13 @@ AudioRegionView::set_one_waveform_color (ArdourCanvas::WaveView* wave) } else { outline = ARDOUR_UI::config()->get_canvasvar_SelectedWaveForm(); fill = ARDOUR_UI::config()->get_canvasvar_SelectedWaveFormFill(); + + if (ARDOUR_UI::config()->get_color_regions_using_track_color()) { + /* just use a slightly transparent version of the selected + * color so that some of the track color bleeds through + */ + fill = UINT_RGBA_CHANGE_A (fill, 217); + } } } else { if (_recregion) { @@ -1441,22 +1448,17 @@ AudioRegionView::set_one_waveform_color (ArdourCanvas::WaveView* wave) } else { outline = ARDOUR_UI::config()->get_canvasvar_WaveForm(); fill = ARDOUR_UI::config()->get_canvasvar_WaveFormFill(); + + if (ARDOUR_UI::config()->get_color_regions_using_track_color()) { + /* just use a slightly transparent version of the selected + * color so that some of the track color bleeds through + */ + fill = UINT_RGBA_CHANGE_A (fill, 217); + } } } } - if (ARDOUR_UI::config()->get_color_regions_using_track_color()) { - - /* just use a slightly transparent version of the selected - * color so that some of the track color bleeds through - */ - - double r, g, b, a; - ArdourCanvas::color_to_rgba (fill, r, g, b, a); - fill = ArdourCanvas::rgba_to_color (r, g, b, 0.85); /* magic number, not user controllable */ - outline = ARDOUR_UI::config()->get_canvasvar_WaveForm(); - } - wave->set_fill_color (fill); wave->set_outline_color (outline); wave->set_clip_color (ARDOUR_UI::config()->get_canvasvar_WaveFormClip()); @@ -1470,13 +1472,7 @@ AudioRegionView::set_frame_color () return; } - if (_region->opaque()) { - fill_opacity = 130; - } else { - fill_opacity = 0; - } - - TimeAxisViewItem::set_frame_color (); + RegionView::set_frame_color (); set_waveform_colors (); } diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index d6c006a77b..c566d54f2d 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -535,6 +535,10 @@ RegionView::set_colors () void RegionView::set_frame_color () { + if (!frame) { + return; + } + if (_region->opaque()) { fill_opacity = 130; } else { diff --git a/gtk2_ardour/time_axis_view_item.cc b/gtk2_ardour/time_axis_view_item.cc index ccf4eab096..0ae4ec72f2 100644 --- a/gtk2_ardour/time_axis_view_item.cc +++ b/gtk2_ardour/time_axis_view_item.cc @@ -755,12 +755,23 @@ TimeAxisViewItem::set_name_text_color () uint32_t TimeAxisViewItem::get_fill_color () const { - uint32_t f = 0; + uint32_t f; + uint32_t o; if (_selected) { f = ARDOUR_UI::config()->get_canvasvar_SelectedFrameBase(); + if (fill_opacity != 0) { + o = fill_opacity; + } else { + /* some condition of this item has set fill opacity to + * zero, but it has been selected, so use a mid-way + * alpha value to make it reasonably visible. + */ + o = 130; + } + } else { if (_recregion) { @@ -773,9 +784,18 @@ TimeAxisViewItem::get_fill_color () const f = fill_color; } } + + /* tweak opacity */ + + if (!rect_visible) { + o = 0; + } else { + o = fill_opacity; + } + } - return f; + return UINT_RGBA_CHANGE_A (f, o); } /** @@ -784,26 +804,16 @@ TimeAxisViewItem::get_fill_color () const void TimeAxisViewItem::set_frame_color() { - uint32_t f = 0; - if (!frame) { return; } - f = get_fill_color (); - - if (fill_opacity) { - f = UINT_RGBA_CHANGE_A (f, fill_opacity); - } - - if (!rect_visible) { - f = UINT_RGBA_CHANGE_A (f, 0); - } - - frame->set_fill_color (f); + frame->set_fill_color (get_fill_color()); set_frame_gradient (); if (!_recregion) { + uint32_t f; + if (_selected) { f = ARDOUR_UI::config()->get_canvasvar_SelectedTimeAxisFrame(); } else { @@ -811,6 +821,7 @@ TimeAxisViewItem::set_frame_color() } if (!rect_visible) { + /* make the frame outline be visible but rather transparent */ f = UINT_RGBA_CHANGE_A (f, 64); }