From: David Robillard Date: Sat, 13 Dec 2014 01:22:16 +0000 (-0500) Subject: Make MIDI regions translucent for internal tools. X-Git-Tag: 4.0-rc1~927 X-Git-Url: https://main.carlh.net/gitweb/?a=commitdiff_plain;h=026f7bf5b7bd4b28209a2fa9d421a5a73ec29dc4;p=ardour.git Make MIDI regions translucent for internal tools. --- diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index 197e190761..18ea905ce4 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -317,6 +317,10 @@ MidiRegionView::init (bool wfd) boost::bind (&MidiRegionView::snap_changed, this), gui_context()); + trackview.editor().MouseModeChanged.connect(_mouse_mode_connection, invalidator (*this), + boost::bind (&MidiRegionView::mouse_mode_changed, this), + gui_context ()); + Config->ParameterChanged.connect (*this, invalidator (*this), boost::bind (&MidiRegionView::parameter_changed, this, _1), gui_context()); connect_to_diskstream (); @@ -413,10 +417,6 @@ MidiRegionView::canvas_group_event(GdkEvent* ev) bool MidiRegionView::enter_notify (GdkEventCrossing* ev) { - trackview.editor().MouseModeChanged.connect ( - _mouse_mode_connection, invalidator (*this), boost::bind (&MidiRegionView::mouse_mode_changed, this), gui_context () - ); - enter_internal(); _entered = true; @@ -437,12 +437,17 @@ MidiRegionView::leave_notify (GdkEventCrossing*) void MidiRegionView::mouse_mode_changed () { - if (trackview.editor().internal_editing()) { - // Switched in to internal editing mode while entered - enter_internal(); - } else { - // Switched out of internal editing mode while entered - leave_internal(); + // Adjust frame colour (become more transparent for internal tools) + set_frame_color(); + + if (_entered) { + if (trackview.editor().internal_editing()) { + // Switched in to internal editing mode while entered + enter_internal(); + } else { + // Switched out of internal editing mode while entered + leave_internal(); + } } } @@ -3236,6 +3241,19 @@ MidiRegionView::note_mouse_position (float x_fraction, float /*y_fraction*/, boo } } +uint32_t +MidiRegionView::fill_opacity() const +{ + uint32_t a = RegionView::fill_opacity(); + if (trackview.editor().current_mouse_mode() == MouseDraw || + trackview.editor().current_mouse_mode() == MouseContent) { + /* Make rect more transparent when in an internal mode. This should + probably be configurable somehow. */ + a /= 2; + } + return a; +} + void MidiRegionView::set_frame_color() { @@ -3255,9 +3273,7 @@ MidiRegionView::set_frame_color() f = fill_color; } - if (!rect_visible) { - f = UINT_RGBA_CHANGE_A (f, 80); - } + f = UINT_RGBA_CHANGE_A (f, fill_opacity()); frame->set_fill_color (f); } diff --git a/gtk2_ardour/midi_region_view.h b/gtk2_ardour/midi_region_view.h index f9cc7c7299..74344380e0 100644 --- a/gtk2_ardour/midi_region_view.h +++ b/gtk2_ardour/midi_region_view.h @@ -109,6 +109,8 @@ public: void set_frame_color(); void color_handler (); + uint32_t fill_opacity() const; + void show_step_edit_cursor (Evoral::MusicalTime pos); void move_step_edit_cursor (Evoral::MusicalTime pos); void hide_step_edit_cursor (); diff --git a/gtk2_ardour/time_axis_view_item.cc b/gtk2_ardour/time_axis_view_item.cc index 2f860d897b..8c38293442 100644 --- a/gtk2_ardour/time_axis_view_item.cc +++ b/gtk2_ardour/time_axis_view_item.cc @@ -184,7 +184,6 @@ TimeAxisViewItem::init (ArdourCanvas::Item* parent, double fpp, uint32_t base_co last_item_width = 0; wide_enough_for_name = wide; high_enough_for_name = high; - rect_visible = true; vestigial_frame = 0; if (duration == 0) { @@ -287,30 +286,6 @@ TimeAxisViewItem::canvas_group_event (GdkEvent* /*ev*/) return false; } -void -TimeAxisViewItem::hide_rect () -{ - rect_visible = false; - set_frame_color (); - - if (name_highlight) { - name_highlight->set_outline_what (ArdourCanvas::Rectangle::What (0)); - name_highlight->set_fill_color (UINT_RGBA_CHANGE_A (fill_color, 64)); - } -} - -void -TimeAxisViewItem::show_rect () -{ - rect_visible = true; - set_frame_color (); - - if (name_highlight) { - name_highlight->set_outline_what (ArdourCanvas::Rectangle::TOP); - name_highlight->set_fill_color (fill_color); - } -} - /** * Set the position of this item on the timeline. * @@ -719,13 +694,6 @@ TimeAxisViewItem::set_name_text_color () uint32_t TimeAxisViewItem::fill_opacity () const { - if (!rect_visible) { - /* if the frame/rect is marked as "invisible", then the - fill should be translucent.parent. - */ - return 64; - } - if (_dragging) { return 130; } diff --git a/gtk2_ardour/time_axis_view_item.h b/gtk2_ardour/time_axis_view_item.h index 74a655a6c0..576e2ae76a 100644 --- a/gtk2_ardour/time_axis_view_item.h +++ b/gtk2_ardour/time_axis_view_item.h @@ -95,9 +95,6 @@ class TimeAxisViewItem : public Selectable, public PBD::ScopedConnectionList virtual void lower () { return; } virtual void lower_to_bottom () { return; } - virtual void hide_rect (); - virtual void show_rect (); - /** @return true if the name area should respond to events */ bool name_active() const { return name_connected; } @@ -224,7 +221,6 @@ class TimeAxisViewItem : public Selectable, public PBD::ScopedConnectionList int name_text_width; bool wide_enough_for_name; bool high_enough_for_name; - bool rect_visible; ArdourCanvas::Container* group; ArdourCanvas::Rectangle* vestigial_frame;