summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2014-12-12 20:22:16 -0500
committerDavid Robillard <d@drobilla.net>2014-12-18 20:23:23 -0500
commit026f7bf5b7bd4b28209a2fa9d421a5a73ec29dc4 (patch)
tree0b52b020baa3b405f65286268e4645bfc34284e9 /gtk2_ardour
parent7ab8a11fb53782dfcf67b652dc65d8d177b0a1b6 (diff)
Make MIDI regions translucent for internal tools.
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/midi_region_view.cc42
-rw-r--r--gtk2_ardour/midi_region_view.h2
-rw-r--r--gtk2_ardour/time_axis_view_item.cc32
-rw-r--r--gtk2_ardour/time_axis_view_item.h4
4 files changed, 31 insertions, 49 deletions
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;