mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-09 23:25:43 +01:00
skip markers respond to single-click by toggling skipping state
This commit is contained in:
parent
119c91813f
commit
2bff69b2fa
5 changed files with 39 additions and 7 deletions
|
|
@ -58,6 +58,7 @@ CANVAS_VARIABLE(canvasvar_LocationLoop, "location loop")
|
|||
CANVAS_VARIABLE(canvasvar_LocationMarker, "location marker")
|
||||
CANVAS_VARIABLE(canvasvar_LocationPunch, "location punch")
|
||||
CANVAS_VARIABLE(canvasvar_LocationSkip, "location skip")
|
||||
CANVAS_VARIABLE(canvasvar_LocationSkipping, "location skipping")
|
||||
CANVAS_VARIABLE(canvasvar_LocationRange, "location range")
|
||||
CANVAS_VARIABLE(canvasvar_MarkerBar, "marker bar")
|
||||
CANVAS_VARIABLE(canvasvar_MarkerBarSeparator, "marker bar separator")
|
||||
|
|
|
|||
|
|
@ -47,10 +47,11 @@
|
|||
<Option name="inactive fade handle" value="bbbbbbaa"/>
|
||||
<Option name="inactive group tab" value="434343ff"/>
|
||||
<Option name="location cd marker" value="B700FFff"/>
|
||||
<Option name="location loop" value="5DA557ff"/>
|
||||
<Option name="location loop" value="ffffffff"/>
|
||||
<Option name="location marker" value="B700FFff"/>
|
||||
<Option name="location punch" value="B700FFff"/>
|
||||
<Option name="location skip" value="eb7801ff"/>
|
||||
<Option name="location skip" value="6c6c6cff"/>
|
||||
<Option name="location skipping" value="eb7801ff"/>
|
||||
<Option name="location range" value="E0922Fff"/>
|
||||
<Option name="marker bar" value="575757ff"/>
|
||||
<Option name="marker bar separator" value="ffffff15"/>
|
||||
|
|
|
|||
|
|
@ -3419,13 +3419,24 @@ void
|
|||
MarkerDrag::finished (GdkEvent* event, bool movement_occurred)
|
||||
{
|
||||
if (!movement_occurred) {
|
||||
|
||||
|
||||
if (was_double_click()) {
|
||||
_editor->rename_marker (_marker);
|
||||
return;
|
||||
}
|
||||
|
||||
/* just a click, do nothing but finish
|
||||
/* just a single click */
|
||||
|
||||
Location* loc = _marker->location ();
|
||||
if (loc) {
|
||||
if (loc->is_skip()) {
|
||||
/* skip range - click toggles active skip status */
|
||||
loc->set_skipping (!loc->is_skipping());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* other markers: do nothing but finish
|
||||
off the selection process
|
||||
*/
|
||||
|
||||
|
|
@ -4550,7 +4561,7 @@ RangeMarkerBarDrag::finished (GdkEvent* event, bool movement_occurred)
|
|||
if (_operation == CreateSkipMarker) {
|
||||
_editor->begin_reversible_command (_("new skip marker"));
|
||||
_editor->session()->locations()->next_available_name(rangename,_("skip "));
|
||||
flags = Location::IsRangeMarker | Location::IsSkip;
|
||||
flags = Location::IsRangeMarker | Location::IsSkip | Location::IsSkipping;
|
||||
_editor->skip_drag_rect->hide();
|
||||
} else if (_operation == CreateCDMarker) {
|
||||
_editor->session()->locations()->next_available_name(rangename, _("CD"));
|
||||
|
|
@ -4559,7 +4570,7 @@ RangeMarkerBarDrag::finished (GdkEvent* event, bool movement_occurred)
|
|||
_editor->cd_marker_bar_drag_rect->hide();
|
||||
} else {
|
||||
_editor->begin_reversible_command (_("new range marker"));
|
||||
_editor->session()->locations()->next_available_name(rangename, _("Marker "));
|
||||
_editor->session()->locations()->next_available_name (rangename, _(Marker::default_new_marker_prefix));
|
||||
flags = Location::IsRangeMarker;
|
||||
_editor->range_bar_drag_rect->hide();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@
|
|||
* due to a conflicting definition of 'Rect' between
|
||||
* Apple's MacTypes.h and GTK.
|
||||
*/
|
||||
#include "gui_thread.h"
|
||||
#include "marker.h"
|
||||
#include "public_editor.h"
|
||||
#include "utils.h"
|
||||
|
|
@ -300,6 +301,10 @@ Marker::Marker (ARDOUR::Location* l, PublicEditor& ed, ArdourCanvas::Container&
|
|||
set_name (annotation);
|
||||
pick_basic_color (rgba);
|
||||
use_color ();
|
||||
|
||||
if (_location) {
|
||||
_location->FlagsChanged.connect (flags_changed_connection, MISSING_INVALIDATOR, boost::bind (&Marker::flags_changed, this), gui_context());
|
||||
}
|
||||
}
|
||||
|
||||
Marker::~Marker ()
|
||||
|
|
@ -317,6 +322,12 @@ void Marker::reparent(ArdourCanvas::Container & parent)
|
|||
_parent = &parent;
|
||||
}
|
||||
|
||||
void
|
||||
Marker::flags_changed ()
|
||||
{
|
||||
pick_basic_color (0);
|
||||
}
|
||||
|
||||
void
|
||||
Marker::set_color (ArdourCanvas::Color c)
|
||||
{
|
||||
|
|
@ -345,7 +356,11 @@ Marker::pick_basic_color (ArdourCanvas::Color c)
|
|||
} else if (_location->is_auto_punch()) {
|
||||
col = ARDOUR_UI::config()->get_canvasvar_LocationPunch();
|
||||
} else if (_location->is_skip()) {
|
||||
col = ARDOUR_UI::config()->get_canvasvar_LocationSkip();
|
||||
if (_location->is_skipping()) {
|
||||
col = ARDOUR_UI::config()->get_canvasvar_LocationSkipping();
|
||||
} else {
|
||||
col = ARDOUR_UI::config()->get_canvasvar_LocationSkip();
|
||||
}
|
||||
} else {
|
||||
col = ARDOUR_UI::config()->get_canvasvar_LocationRange();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ class Marker : public sigc::trackable
|
|||
static PBD::Signal1<void,Marker*> CatchDeletion;
|
||||
|
||||
ArdourCanvas::Item& the_item() const;
|
||||
ARDOUR::Location* location() const { return _location; }
|
||||
|
||||
void set_has_scene_change (bool);
|
||||
|
||||
|
|
@ -127,6 +128,7 @@ class Marker : public sigc::trackable
|
|||
double _label_offset;
|
||||
bool _have_scene_change;
|
||||
|
||||
void flags_changed ();
|
||||
void pick_basic_color (ArdourCanvas::Color);
|
||||
virtual void use_color ();
|
||||
void reposition ();
|
||||
|
|
@ -139,6 +141,8 @@ private:
|
|||
/* disallow copy construction */
|
||||
Marker (Marker const &);
|
||||
Marker & operator= (Marker const &);
|
||||
|
||||
PBD::ScopedConnection flags_changed_connection;
|
||||
};
|
||||
|
||||
/** A Marker that displays a range (start+end) rather than a single location
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue