summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor_mouse.cc34
-rw-r--r--gtk2_ardour/marker.cc40
-rw-r--r--gtk2_ardour/marker.h6
3 files changed, 78 insertions, 2 deletions
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc
index 0adbe42818..1bc242d3a2 100644
--- a/gtk2_ardour/editor_mouse.cc
+++ b/gtk2_ardour/editor_mouse.cc
@@ -1688,6 +1688,8 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
{
ControlPoint* cp;
ArdourMarker * marker;
+ MeterMarker* m_marker = 0;
+ TempoMarker* t_marker = 0;
double fraction;
bool ret = true;
@@ -1745,9 +1747,22 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
}
entered_marker = marker;
marker->set_color_rgba (UIConfiguration::instance().color ("entered marker"));
- // fall through
+ break;
+
case MeterMarkerItem:
+ if ((m_marker = static_cast<MeterMarker *> (item->get_data ("marker"))) == 0) {
+ break;
+ }
+ entered_marker = m_marker;
+ m_marker->set_enter_color ();
+ break;
+
case TempoMarkerItem:
+ if ((t_marker = static_cast<TempoMarker *> (item->get_data ("marker"))) == 0) {
+ break;
+ }
+ entered_marker = t_marker;
+ t_marker->set_enter_color ();
break;
case FadeInHandleItem:
@@ -1822,6 +1837,8 @@ Editor::leave_handler (ArdourCanvas::Item* item, GdkEvent*, ItemType item_type)
{
AutomationLine* al;
ArdourMarker *marker;
+ TempoMarker *t_marker;
+ MeterMarker *m_marker;
Location *loc;
bool is_start;
bool ret = true;
@@ -1854,9 +1871,22 @@ Editor::leave_handler (ArdourCanvas::Item* item, GdkEvent*, ItemType item_type)
if ((loc = find_location_from_marker (marker, is_start)) != 0) {
location_flags_changed (loc);
}
- // fall through
+ break;
+
case MeterMarkerItem:
+ if ((m_marker = static_cast<MeterMarker *> (item->get_data ("marker"))) == 0) {
+ break;
+ }
+ entered_marker = 0;
+ m_marker->set_leave_color ();
+ break;
+
case TempoMarkerItem:
+ if ((t_marker = static_cast<TempoMarker *> (item->get_data ("marker"))) == 0) {
+ break;
+ }
+ entered_marker = 0;
+ t_marker->set_leave_color ();
break;
case FadeInTrimHandleItem:
diff --git a/gtk2_ardour/marker.cc b/gtk2_ardour/marker.cc
index 87c0c06ab2..9e05e1e4d6 100644
--- a/gtk2_ardour/marker.cc
+++ b/gtk2_ardour/marker.cc
@@ -556,6 +556,26 @@ TempoMarker::update_height_mark (const double& ratio)
mark->set (*points);
}
+void
+TempoMarker::set_enter_color ()
+{
+ if (_tempo.position_lock_style() == MusicTime) {
+ set_color_rgba (UIConfiguration::instance().color ("tempo marker"));
+ } else {
+ set_color_rgba (UIConfiguration::instance().color ("tempo marker music"));
+ }
+}
+
+void
+TempoMarker::set_leave_color ()
+{
+ if (_tempo.position_lock_style() == MusicTime) {
+ set_color_rgba (UIConfiguration::instance().color ("tempo marker music"));
+ } else {
+ set_color_rgba (UIConfiguration::instance().color ("tempo marker"));
+ }
+}
+
/***********************************************************************/
MeterMarker::MeterMarker (PublicEditor& editor, ArdourCanvas::Container& parent, guint32 rgba, const string& text,
@@ -571,3 +591,23 @@ MeterMarker::~MeterMarker ()
{
}
+void
+MeterMarker::set_enter_color ()
+{
+ if (_meter.position_lock_style() == MusicTime) {
+ set_color_rgba (UIConfiguration::instance().color ("meter marker"));
+ } else {
+ set_color_rgba (UIConfiguration::instance().color ("meter marker music"));
+ }
+}
+
+void
+MeterMarker::set_leave_color ()
+{
+ if (_meter.position_lock_style() == MusicTime) {
+ set_color_rgba (UIConfiguration::instance().color ("meter marker music"));
+ } else {
+ set_color_rgba (UIConfiguration::instance().color ("meter marker"));
+ }
+}
+
diff --git a/gtk2_ardour/marker.h b/gtk2_ardour/marker.h
index becc809a74..b7ef263833 100644
--- a/gtk2_ardour/marker.h
+++ b/gtk2_ardour/marker.h
@@ -146,6 +146,9 @@ class TempoMarker : public ArdourMarker
ARDOUR::TempoSection& tempo() const { return _tempo; }
void update_height_mark (const double& ratio);
+ void set_enter_color();
+ void set_leave_color();
+
private:
ARDOUR::TempoSection& _tempo;
};
@@ -158,6 +161,9 @@ class MeterMarker : public ArdourMarker
ARDOUR::MeterSection& meter() const { return _meter; }
+ void set_enter_color();
+ void set_leave_color();
+
private:
ARDOUR::MeterSection& _meter;
};