13
0

Consolidate ruler prelight events

This fixes various copy/edit bugs (e.g. transport ruler uses
"range marker bar" colors, but only after a enter/leave event).
This commit is contained in:
Robin Gareus 2022-12-10 05:45:16 +01:00
parent 3875468935
commit eb42318d3e
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
4 changed files with 14 additions and 149 deletions

View File

@ -1719,13 +1719,7 @@ private:
bool canvas_note_event (GdkEvent* event, ArdourCanvas::Item*);
bool canvas_ruler_event (GdkEvent* event, ArdourCanvas::Item*, ItemType);
bool canvas_tempo_bar_event (GdkEvent* event, ArdourCanvas::Item*);
bool canvas_meter_bar_event (GdkEvent* event, ArdourCanvas::Item*);
bool canvas_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*);
bool canvas_range_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*);
bool canvas_transport_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*);
bool canvas_cd_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*);
bool canvas_cue_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*);
bool canvas_ruler_bar_event (GdkEvent* event, ArdourCanvas::Item*, ItemType, std::string const&);
bool canvas_videotl_bar_event (GdkEvent* event, ArdourCanvas::Item*);
void update_video_timeline (bool flush = false);

View File

@ -233,14 +233,14 @@ Editor::initialize_canvas ()
transport_punchout_line->set_y1 (ArdourCanvas::COORD_MAX);
transport_punchout_line->hide();
tempo_bar->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_tempo_bar_event), tempo_bar));
meter_bar->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_meter_bar_event), meter_bar));
marker_bar->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_marker_bar_event), marker_bar));
cd_marker_bar->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_cd_marker_bar_event), cd_marker_bar));
cue_marker_bar->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_cue_marker_bar_event), cue_marker_bar));
tempo_bar->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_ruler_bar_event), tempo_bar, TempoBarItem, "tempo bar"));
meter_bar->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_ruler_bar_event), meter_bar, MeterBarItem, "meter bar"));
marker_bar->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_ruler_bar_event), marker_bar, MarkerBarItem, "marker bar"));
cd_marker_bar->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_ruler_bar_event), cd_marker_bar, CdMarkerBarItem, "cd marker bar"));
cue_marker_bar->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_ruler_bar_event), cue_marker_bar, CueMarkerBarItem, "cd marker bar"));
videotl_group->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_videotl_bar_event), videotl_group));
range_marker_bar->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_range_marker_bar_event), range_marker_bar));
transport_marker_bar->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_transport_marker_bar_event), transport_marker_bar));
range_marker_bar->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_ruler_bar_event), range_marker_bar, RangeMarkerBarItem, "range marker bar"));
transport_marker_bar->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_ruler_bar_event), transport_marker_bar, TransportMarkerBarItem, "transport marker bar"));
_playhead_cursor = new EditorCursor (*this, &Editor::canvas_playhead_cursor_event, X_("playhead"));

View File

@ -978,111 +978,6 @@ Editor::canvas_marker_event (GdkEvent *event, ArdourCanvas::Item* item, ArdourMa
return typed_event (item, event, MarkerItem);
}
bool
Editor::canvas_marker_bar_event (GdkEvent *event, ArdourCanvas::Item* item)
{
switch (event->type) {
case GDK_ENTER_NOTIFY:
if (event->crossing.detail != GDK_NOTIFY_INFERIOR) {
marker_bar->set_fill_color (Gtkmm2ext::HSV(UIConfiguration::instance().color_mod ("range marker bar", "marker bar")).lighter(0.20).color());
}
break;
case GDK_LEAVE_NOTIFY:
if (event->crossing.detail != GDK_NOTIFY_INFERIOR) {
marker_bar->set_fill_color (UIConfiguration::instance().color_mod ("range marker bar", "marker bar"));
}
break;
default:
break;
};
return typed_event (item, event, MarkerBarItem);
}
bool
Editor::canvas_range_marker_bar_event (GdkEvent *event, ArdourCanvas::Item* item)
{
switch (event->type) {
case GDK_ENTER_NOTIFY:
if (event->crossing.detail != GDK_NOTIFY_INFERIOR) {
range_marker_bar->set_fill_color (Gtkmm2ext::HSV(UIConfiguration::instance().color_mod ("range marker bar", "marker bar")).lighter(0.20).color());
}
break;
case GDK_LEAVE_NOTIFY:
if (event->crossing.detail != GDK_NOTIFY_INFERIOR) {
range_marker_bar->set_fill_color (UIConfiguration::instance().color_mod ("range marker bar", "marker bar"));
}
break;
default:
break;
};
return typed_event (item, event, RangeMarkerBarItem);
}
bool
Editor::canvas_transport_marker_bar_event (GdkEvent *event, ArdourCanvas::Item* item)
{
switch (event->type) {
case GDK_ENTER_NOTIFY:
if (event->crossing.detail != GDK_NOTIFY_INFERIOR) {
transport_marker_bar->set_fill_color (Gtkmm2ext::HSV(UIConfiguration::instance().color_mod ("range marker bar", "marker bar")).lighter(0.20).color());
}
break;
case GDK_LEAVE_NOTIFY:
if (event->crossing.detail != GDK_NOTIFY_INFERIOR) {
transport_marker_bar->set_fill_color (UIConfiguration::instance().color_mod ("range marker bar", "marker bar"));
}
break;
default:
break;
};
return typed_event (item, event, TransportMarkerBarItem);
}
bool
Editor::canvas_cd_marker_bar_event (GdkEvent *event, ArdourCanvas::Item* item)
{
switch (event->type) {
case GDK_ENTER_NOTIFY:
if (event->crossing.detail != GDK_NOTIFY_INFERIOR) {
cd_marker_bar->set_fill_color (Gtkmm2ext::HSV(UIConfiguration::instance().color_mod ("range marker bar", "marker bar")).lighter(0.20).color());
}
break;
case GDK_LEAVE_NOTIFY:
if (event->crossing.detail != GDK_NOTIFY_INFERIOR) {
cd_marker_bar->set_fill_color (UIConfiguration::instance().color_mod ("range marker bar", "marker bar"));
}
break;
default:
break;
};
return typed_event (item, event, CdMarkerBarItem);
}
bool
Editor::canvas_cue_marker_bar_event (GdkEvent *event, ArdourCanvas::Item* item)
{
switch (event->type) {
case GDK_ENTER_NOTIFY:
if (event->crossing.detail != GDK_NOTIFY_INFERIOR) {
cue_marker_bar->set_fill_color (Gtkmm2ext::HSV(UIConfiguration::instance().color_mod ("range marker bar", "marker bar")).lighter(0.20).color());
}
break;
case GDK_LEAVE_NOTIFY:
if (event->crossing.detail != GDK_NOTIFY_INFERIOR) {
cue_marker_bar->set_fill_color (UIConfiguration::instance().color_mod ("range marker bar", "marker bar"));
}
break;
default:
break;
};
return typed_event (item, event, CueMarkerBarItem);
}
bool
Editor::canvas_videotl_bar_event (GdkEvent *event, ArdourCanvas::Item* item)
{
@ -1172,45 +1067,26 @@ Editor::canvas_ruler_event (GdkEvent *event, ArdourCanvas::Item* item, ItemType
}
bool
Editor::canvas_tempo_bar_event (GdkEvent *event, ArdourCanvas::Item* item)
Editor::canvas_ruler_bar_event (GdkEvent *event, ArdourCanvas::Item* item, ItemType type, std::string const& color_name)
{
/* XXX consolidate with Editor::canvas_ruler_event ? */
switch (event->type) {
case GDK_ENTER_NOTIFY:
if (event->crossing.detail != GDK_NOTIFY_INFERIOR) {
tempo_bar->set_fill_color (Gtkmm2ext::HSV(UIConfiguration::instance().color_mod ("tempo bar", "marker bar")).lighter(0.20).color());
item->set_fill_color (Gtkmm2ext::HSV(UIConfiguration::instance().color_mod (color_name, "marker bar")).lighter(0.20).color());
}
break;
case GDK_LEAVE_NOTIFY:
if (event->crossing.detail != GDK_NOTIFY_INFERIOR) {
tempo_bar->set_fill_color (UIConfiguration::instance().color_mod ("tempo bar", "marker bar"));
item->set_fill_color (UIConfiguration::instance().color_mod (color_name, "marker bar"));
}
break;
default:
break;
};
return typed_event (item, event, TempoBarItem);
}
bool
Editor::canvas_meter_bar_event (GdkEvent *event, ArdourCanvas::Item* item)
{
switch (event->type) {
case GDK_ENTER_NOTIFY:
if (event->crossing.detail != GDK_NOTIFY_INFERIOR) {
meter_bar->set_fill_color (Gtkmm2ext::HSV(UIConfiguration::instance().color_mod ("meter bar", "marker bar")).lighter(0.20).color());
}
break;
case GDK_LEAVE_NOTIFY:
if (event->crossing.detail != GDK_NOTIFY_INFERIOR) {
meter_bar->set_fill_color (UIConfiguration::instance().color_mod ("meter bar", "marker bar"));
}
break;
default:
break;
};
return typed_event (item, event, MeterBarItem);
return typed_event (item, event, type);
}
bool

View File

@ -475,11 +475,6 @@ public:
virtual bool canvas_bbt_marker_event (GdkEvent* event, ArdourCanvas::Item*, BBTMarker*) = 0;
virtual bool canvas_automation_track_event(GdkEvent* event, ArdourCanvas::Item*, AutomationTimeAxisView*) = 0;
virtual bool canvas_tempo_bar_event (GdkEvent* event, ArdourCanvas::Item*) = 0;
virtual bool canvas_meter_bar_event (GdkEvent* event, ArdourCanvas::Item*) = 0;
virtual bool canvas_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*) = 0;
virtual bool canvas_range_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*) = 0;
virtual bool canvas_transport_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*) = 0;
virtual bool canvas_note_event (GdkEvent* event, ArdourCanvas::Item*) = 0;
static const int window_border_width;