tweak Editor remove-marker APIs to set state for removing region cue markers
This commit is contained in:
parent
baee1a2f01
commit
bd2d8b8c87
|
@ -684,8 +684,10 @@ private:
|
|||
void add_new_location (ARDOUR::Location*);
|
||||
ArdourCanvas::Container* add_new_location_internal (ARDOUR::Location*);
|
||||
void location_gone (ARDOUR::Location*);
|
||||
void remove_marker (ArdourCanvas::Item&, GdkEvent*);
|
||||
gint really_remove_marker (ARDOUR::Location* loc);
|
||||
void remove_marker (ArdourCanvas::Item&);
|
||||
void remove_marker (ArdourMarker*);
|
||||
gint really_remove_global_marker (ARDOUR::Location* loc);
|
||||
gint really_remove_region_marker (ArdourMarker*);
|
||||
void goto_nth_marker (int nth);
|
||||
void trigger_script (int nth);
|
||||
void trigger_script_by_name (const std::string script_name);
|
||||
|
|
|
@ -738,29 +738,45 @@ Editor::mouse_add_new_range (samplepos_t where)
|
|||
}
|
||||
|
||||
void
|
||||
Editor::remove_marker (ArdourCanvas::Item& item, GdkEvent*)
|
||||
Editor::remove_marker (ArdourCanvas::Item& item)
|
||||
{
|
||||
ArdourMarker* marker;
|
||||
bool is_start;
|
||||
|
||||
if (!_session) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ((marker = static_cast<ArdourMarker*> (item.get_data ("marker"))) == 0) {
|
||||
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
|
||||
abort(); /*NOTREACHED*/
|
||||
}
|
||||
|
||||
if (entered_marker == marker) {
|
||||
entered_marker = NULL;
|
||||
remove_marker (marker);
|
||||
}
|
||||
|
||||
void
|
||||
Editor::remove_marker (ArdourMarker* marker)
|
||||
{
|
||||
if (!_session) {
|
||||
return;
|
||||
}
|
||||
|
||||
Location* loc = find_location_from_marker (marker, is_start);
|
||||
if (marker->type() == ArdourMarker::RegionCue) {
|
||||
Glib::signal_idle().connect (sigc::bind (sigc::mem_fun(*this, &Editor::really_remove_region_marker), marker));
|
||||
} else {
|
||||
|
||||
if (_session && loc) {
|
||||
Glib::signal_idle().connect (sigc::bind (sigc::mem_fun(*this, &Editor::really_remove_marker), loc));
|
||||
bool is_start;
|
||||
|
||||
Location* loc = find_location_from_marker (marker, is_start);
|
||||
|
||||
if (loc) {
|
||||
Glib::signal_idle().connect (sigc::bind (sigc::mem_fun(*this, &Editor::really_remove_global_marker), loc));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gint
|
||||
Editor::really_remove_marker (Location* loc)
|
||||
Editor::really_remove_global_marker (Location* loc)
|
||||
{
|
||||
begin_reversible_command (_("remove marker"));
|
||||
XMLNode &before = _session->locations()->get_state();
|
||||
|
@ -771,6 +787,15 @@ Editor::really_remove_marker (Location* loc)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
gint
|
||||
Editor::really_remove_region_marker (ArdourMarker* marker)
|
||||
{
|
||||
begin_reversible_command (_("remove region marker"));
|
||||
cerr << "would remove this region marker\n";
|
||||
commit_reversible_command ();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
Editor::location_gone (Location *location)
|
||||
{
|
||||
|
@ -1429,7 +1454,7 @@ Editor::marker_menu_remove ()
|
|||
} else if (tm) {
|
||||
remove_tempo_marker (marker_menu_item);
|
||||
} else {
|
||||
remove_marker (*marker_menu_item, (GdkEvent*) 0);
|
||||
remove_marker (*marker_menu_item);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1669,7 +1669,7 @@ Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemT
|
|||
break;
|
||||
|
||||
case MarkerItem:
|
||||
remove_marker (*item, event);
|
||||
remove_marker (*item);
|
||||
break;
|
||||
|
||||
case RegionItem:
|
||||
|
|
|
@ -4308,14 +4308,8 @@ Editor::cut_copy (CutCopyOp op)
|
|||
|
||||
/* cut/delete op while pointing at a marker */
|
||||
|
||||
bool ignored;
|
||||
Location* loc = find_location_from_marker (entered_marker, ignored);
|
||||
|
||||
if (_session && loc) {
|
||||
entered_marker = NULL;
|
||||
Glib::signal_idle().connect (sigc::bind (sigc::mem_fun(*this, &Editor::really_remove_marker), loc));
|
||||
}
|
||||
|
||||
remove_marker (entered_marker);
|
||||
entered_marker = NULL;
|
||||
_drags->abort ();
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue