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
No known key found for this signature in database
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_note_event (GdkEvent* event, ArdourCanvas::Item*);
bool canvas_ruler_event (GdkEvent* event, ArdourCanvas::Item*, ItemType); bool canvas_ruler_event (GdkEvent* event, ArdourCanvas::Item*, ItemType);
bool canvas_tempo_bar_event (GdkEvent* event, ArdourCanvas::Item*); bool canvas_ruler_bar_event (GdkEvent* event, ArdourCanvas::Item*, ItemType, std::string const&);
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_videotl_bar_event (GdkEvent* event, ArdourCanvas::Item*); bool canvas_videotl_bar_event (GdkEvent* event, ArdourCanvas::Item*);
void update_video_timeline (bool flush = false); 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->set_y1 (ArdourCanvas::COORD_MAX);
transport_punchout_line->hide(); transport_punchout_line->hide();
tempo_bar->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_tempo_bar_event), tempo_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_meter_bar_event), meter_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_marker_bar_event), marker_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_cd_marker_bar_event), cd_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_cue_marker_bar_event), cue_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)); 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)); 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_transport_marker_bar_event), transport_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")); _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); 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 bool
Editor::canvas_videotl_bar_event (GdkEvent *event, ArdourCanvas::Item* item) 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 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) { switch (event->type) {
case GDK_ENTER_NOTIFY: case GDK_ENTER_NOTIFY:
if (event->crossing.detail != GDK_NOTIFY_INFERIOR) { 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; break;
case GDK_LEAVE_NOTIFY: case GDK_LEAVE_NOTIFY:
if (event->crossing.detail != GDK_NOTIFY_INFERIOR) { 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; break;
default: default:
break; break;
}; };
return typed_event (item, event, TempoBarItem); return typed_event (item, event, type);
}
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);
} }
bool bool

View file

@ -475,11 +475,6 @@ public:
virtual bool canvas_bbt_marker_event (GdkEvent* event, ArdourCanvas::Item*, BBTMarker*) = 0; 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_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; virtual bool canvas_note_event (GdkEvent* event, ArdourCanvas::Item*) = 0;
static const int window_border_width; static const int window_border_width;