Slip Contents Drag: disambiguate Slip Contents from prior Contents Trim
This commit is contained in:
parent
3d8bccb508
commit
f281e7e3c3
|
@ -675,20 +675,20 @@ RegionDrag::setup_video_sample_offset ()
|
||||||
_preview_video = true;
|
_preview_video = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
RegionContentsDrag::RegionContentsDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> const & v)
|
RegionSlipContentsDrag::RegionSlipContentsDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> const & v)
|
||||||
: RegionDrag (e, i, p, v)
|
: RegionDrag (e, i, p, v)
|
||||||
{
|
{
|
||||||
DEBUG_TRACE (DEBUG::Drags, "New RegionContentsDrag\n");
|
DEBUG_TRACE (DEBUG::Drags, "New RegionSlipContentsDrag\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
RegionContentsDrag::start_grab (GdkEvent* event, Gdk::Cursor* cursor)
|
RegionSlipContentsDrag::start_grab (GdkEvent* event, Gdk::Cursor* cursor)
|
||||||
{
|
{
|
||||||
Drag::start_grab (event, _editor->cursors()->trimmer);
|
Drag::start_grab (event, _editor->cursors()->trimmer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
RegionContentsDrag::motion (GdkEvent* event, bool first_move)
|
RegionSlipContentsDrag::motion (GdkEvent* event, bool first_move)
|
||||||
{
|
{
|
||||||
if (first_move) {
|
if (first_move) {
|
||||||
_editor->begin_reversible_command (_("Region content trim"));
|
_editor->begin_reversible_command (_("Region content trim"));
|
||||||
|
@ -703,12 +703,12 @@ RegionContentsDrag::motion (GdkEvent* event, bool first_move)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
RegionContentsDrag::finished (GdkEvent *, bool)
|
RegionSlipContentsDrag::finished (GdkEvent *, bool)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
RegionContentsDrag::aborted (bool)
|
RegionSlipContentsDrag::aborted (bool)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -372,12 +372,12 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Drag the Contents rather than the bounds of a region (i.e. Slip) */
|
/** Drag the Contents rather than the bounds of a region (i.e. Slip) */
|
||||||
class RegionContentsDrag : public RegionDrag
|
class RegionSlipContentsDrag : public RegionDrag
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
RegionContentsDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list<RegionView*> const &);
|
RegionSlipContentsDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list<RegionView*> const &);
|
||||||
virtual ~RegionContentsDrag () {}
|
virtual ~RegionSlipContentsDrag () {}
|
||||||
|
|
||||||
virtual void start_grab (GdkEvent *, Gdk::Cursor *);
|
virtual void start_grab (GdkEvent *, Gdk::Cursor *);
|
||||||
virtual void motion (GdkEvent *, bool);
|
virtual void motion (GdkEvent *, bool);
|
||||||
|
|
|
@ -1061,8 +1061,8 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
|
||||||
}
|
}
|
||||||
|
|
||||||
/* click on a normal region view */
|
/* click on a normal region view */
|
||||||
if (Keyboard::modifier_state_equals (event->button.state, ArdourKeyboard::trim_contents_modifier ())) {
|
if (Keyboard::modifier_state_equals (event->button.state, ArdourKeyboard::slip_contents_modifier ())) {
|
||||||
_drags->add (new RegionContentsDrag (this, item, clicked_regionview, selection->regions.by_layer()));
|
_drags->add (new RegionSlipContentsDrag (this, item, clicked_regionview, selection->regions.by_layer()));
|
||||||
} else if (ArdourKeyboard::indicates_copy (event->button.state)) {
|
} else if (ArdourKeyboard::indicates_copy (event->button.state)) {
|
||||||
add_region_copy_drag (item, event, clicked_regionview);
|
add_region_copy_drag (item, event, clicked_regionview);
|
||||||
} else if (Keyboard::the_keyboard().key_is_down (GDK_b)) {
|
} else if (Keyboard::the_keyboard().key_is_down (GDK_b)) {
|
||||||
|
|
|
@ -51,8 +51,8 @@ guint ArdourKeyboard::constraint_mod = Keyboard::PrimaryModifier;
|
||||||
guint ArdourKeyboard::constraint_mod = Keyboard::TertiaryModifier;
|
guint ArdourKeyboard::constraint_mod = Keyboard::TertiaryModifier;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* TrimDrag::start_grab() */
|
/* RegionSlipContentsDrag */
|
||||||
guint ArdourKeyboard::trim_contents_mod = Keyboard::PrimaryModifier;
|
guint ArdourKeyboard::slip_contents_mod = Keyboard::PrimaryModifier|Keyboard::TertiaryModifier;
|
||||||
|
|
||||||
/* TrimDrag::motion() */
|
/* TrimDrag::motion() */
|
||||||
guint ArdourKeyboard::trim_overlap_mod = Keyboard::TertiaryModifier;
|
guint ArdourKeyboard::trim_overlap_mod = Keyboard::TertiaryModifier;
|
||||||
|
@ -234,7 +234,7 @@ ArdourKeyboard::get_state (void)
|
||||||
XMLNode* node = &Keyboard::get_state ();
|
XMLNode* node = &Keyboard::get_state ();
|
||||||
|
|
||||||
node->set_property ("constraint-modifier", constraint_mod);
|
node->set_property ("constraint-modifier", constraint_mod);
|
||||||
node->set_property ("trim-contents-modifier", trim_contents_mod);
|
node->set_property ("slip-contents-modifier", slip_contents_mod);
|
||||||
node->set_property ("trim-overlap-modifier", trim_overlap_mod);
|
node->set_property ("trim-overlap-modifier", trim_overlap_mod);
|
||||||
node->set_property ("trim-anchored-modifier", trim_anchored_mod);
|
node->set_property ("trim-anchored-modifier", trim_anchored_mod);
|
||||||
node->set_property ("fine-adjust-modifier", fine_adjust_mod);
|
node->set_property ("fine-adjust-modifier", fine_adjust_mod);
|
||||||
|
@ -248,7 +248,7 @@ int
|
||||||
ArdourKeyboard::set_state (const XMLNode& node, int version)
|
ArdourKeyboard::set_state (const XMLNode& node, int version)
|
||||||
{
|
{
|
||||||
node.get_property ("constraint-modifier", constraint_mod);
|
node.get_property ("constraint-modifier", constraint_mod);
|
||||||
node.get_property ("trim-contents-modifier", trim_contents_mod);
|
node.get_property ("slip-contents-modifier", slip_contents_mod);
|
||||||
node.get_property ("trim-overlap-modifier", trim_overlap_mod);
|
node.get_property ("trim-overlap-modifier", trim_overlap_mod);
|
||||||
node.get_property ("trim-anchored-modifier", trim_anchored_mod);
|
node.get_property ("trim-anchored-modifier", trim_anchored_mod);
|
||||||
node.get_property ("fine-adjust-modifier", fine_adjust_mod);
|
node.get_property ("fine-adjust-modifier", fine_adjust_mod);
|
||||||
|
@ -262,7 +262,7 @@ void
|
||||||
ArdourKeyboard::reset_relevant_modifier_key_mask ()
|
ArdourKeyboard::reset_relevant_modifier_key_mask ()
|
||||||
{
|
{
|
||||||
RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | constraint_mod);
|
RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | constraint_mod);
|
||||||
RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | trim_contents_mod);
|
RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | slip_contents_mod);
|
||||||
RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | trim_overlap_mod);
|
RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | trim_overlap_mod);
|
||||||
RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | trim_anchored_mod);
|
RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | trim_anchored_mod);
|
||||||
RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | fine_adjust_mod);
|
RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | fine_adjust_mod);
|
||||||
|
@ -320,9 +320,9 @@ ArdourKeyboard::set_constraint_modifier (guint mod)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ArdourKeyboard::set_trim_contents_modifier (guint mod)
|
ArdourKeyboard::set_slip_contents_modifier (guint mod)
|
||||||
{
|
{
|
||||||
trim_contents_mod = mod;
|
slip_contents_mod = mod;
|
||||||
the_keyboard().reset_relevant_modifier_key_mask();
|
the_keyboard().reset_relevant_modifier_key_mask();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -73,9 +73,9 @@ public:
|
||||||
/** @return Modifier mask to constrain drags in a particular direction; */
|
/** @return Modifier mask to constrain drags in a particular direction; */
|
||||||
static ModifierMask constraint_modifier () { return ModifierMask (constraint_mod); }
|
static ModifierMask constraint_modifier () { return ModifierMask (constraint_mod); }
|
||||||
|
|
||||||
static void set_trim_contents_modifier (guint);
|
static void set_slip_contents_modifier (guint);
|
||||||
/** @return Modifier mask to move contents rather than region bounds during trim; */
|
/** @return Modifier mask to move contents rather than region bounds during trim; */
|
||||||
static ModifierMask trim_contents_modifier () { return ModifierMask (trim_contents_mod); }
|
static ModifierMask slip_contents_modifier () { return ModifierMask (slip_contents_mod); }
|
||||||
|
|
||||||
static void set_trim_overlap_modifier (guint);
|
static void set_trim_overlap_modifier (guint);
|
||||||
/** @return Modifier mask to remove region overlaps during trim; */
|
/** @return Modifier mask to remove region overlaps during trim; */
|
||||||
|
@ -98,7 +98,7 @@ public:
|
||||||
static ModifierMask note_size_relative_modifier () { return ModifierMask (note_size_relative_mod); }
|
static ModifierMask note_size_relative_modifier () { return ModifierMask (note_size_relative_mod); }
|
||||||
private:
|
private:
|
||||||
static guint constraint_mod;
|
static guint constraint_mod;
|
||||||
static guint trim_contents_mod;
|
static guint slip_contents_mod;
|
||||||
static guint trim_overlap_mod;
|
static guint trim_overlap_mod;
|
||||||
static guint trim_anchored_mod;
|
static guint trim_anchored_mod;
|
||||||
static guint fine_adjust_mod;
|
static guint fine_adjust_mod;
|
||||||
|
|
|
@ -563,6 +563,21 @@ public:
|
||||||
++row;
|
++row;
|
||||||
col = 1;
|
col = 1;
|
||||||
|
|
||||||
|
/* slip_contents */
|
||||||
|
set_popdown_strings (_slip_contents_combo, dumb);
|
||||||
|
_slip_contents_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::slip_contents_modifier_chosen));
|
||||||
|
Gtkmm2ext::UI::instance()->set_tip (_slip_contents_combo,
|
||||||
|
(string_compose (_("<b>Recommended Setting: %1-%2</b>%3"), Keyboard::primary_modifier_name (), Keyboard::tertiary_modifier_name (), restart_msg)));
|
||||||
|
|
||||||
|
l = manage (left_aligned_label (_("Slip Contents using:")));
|
||||||
|
l->set_name ("OptionsLabel");
|
||||||
|
|
||||||
|
t->attach (*l, col, col + 1, row, row + 1, FILL, FILL);
|
||||||
|
t->attach (_slip_contents_combo, col + 1, col + 2, row, row + 1, FILL | EXPAND, FILL);
|
||||||
|
|
||||||
|
++row;
|
||||||
|
col = 1;
|
||||||
|
|
||||||
/* constraint modifier */
|
/* constraint modifier */
|
||||||
set_popdown_strings (_constraint_modifier_combo, dumb);
|
set_popdown_strings (_constraint_modifier_combo, dumb);
|
||||||
_constraint_modifier_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::constraint_modifier_chosen));
|
_constraint_modifier_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::constraint_modifier_chosen));
|
||||||
|
@ -608,21 +623,6 @@ public:
|
||||||
++row;
|
++row;
|
||||||
col = 1;
|
col = 1;
|
||||||
|
|
||||||
/* trim_contents */
|
|
||||||
set_popdown_strings (_trim_contents_combo, dumb);
|
|
||||||
_trim_contents_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::trim_contents_modifier_chosen));
|
|
||||||
Gtkmm2ext::UI::instance()->set_tip (_trim_contents_combo,
|
|
||||||
(string_compose (_("<b>Recommended Setting: %1</b>%2"), Keyboard::primary_modifier_name (), restart_msg)));
|
|
||||||
|
|
||||||
l = manage (left_aligned_label (_("Trim contents using:")));
|
|
||||||
l->set_name ("OptionsLabel");
|
|
||||||
|
|
||||||
t->attach (*l, col, col + 1, row, row + 1, FILL, FILL);
|
|
||||||
t->attach (_trim_contents_combo, col + 1, col + 2, row, row + 1, FILL | EXPAND, FILL);
|
|
||||||
|
|
||||||
++row;
|
|
||||||
col = 1;
|
|
||||||
|
|
||||||
/* anchored trim */
|
/* anchored trim */
|
||||||
set_popdown_strings (_trim_anchored_combo, dumb);
|
set_popdown_strings (_trim_anchored_combo, dumb);
|
||||||
_trim_anchored_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::trim_anchored_modifier_chosen));
|
_trim_anchored_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::trim_anchored_modifier_chosen));
|
||||||
|
@ -806,8 +806,8 @@ public:
|
||||||
if (modifiers[x].modifier == (guint) ArdourKeyboard::push_points_modifier ()) {
|
if (modifiers[x].modifier == (guint) ArdourKeyboard::push_points_modifier ()) {
|
||||||
_push_points_combo.set_active_text (S_(modifiers[x].name));
|
_push_points_combo.set_active_text (S_(modifiers[x].name));
|
||||||
}
|
}
|
||||||
if (modifiers[x].modifier == (guint) ArdourKeyboard::trim_contents_modifier ()) {
|
if (modifiers[x].modifier == (guint) ArdourKeyboard::slip_contents_modifier ()) {
|
||||||
_trim_contents_combo.set_active_text (S_(modifiers[x].name));
|
_slip_contents_combo.set_active_text (S_(modifiers[x].name));
|
||||||
}
|
}
|
||||||
if (modifiers[x].modifier == (guint) ArdourKeyboard::trim_anchored_modifier ()) {
|
if (modifiers[x].modifier == (guint) ArdourKeyboard::trim_anchored_modifier ()) {
|
||||||
_trim_anchored_combo.set_active_text (S_(modifiers[x].name));
|
_trim_anchored_combo.set_active_text (S_(modifiers[x].name));
|
||||||
|
@ -940,13 +940,13 @@ private:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void trim_contents_modifier_chosen ()
|
void slip_contents_modifier_chosen ()
|
||||||
{
|
{
|
||||||
string const txt = _trim_contents_combo.get_active_text();
|
string const txt = _slip_contents_combo.get_active_text();
|
||||||
|
|
||||||
for (int i = 0; modifiers[i].name; ++i) {
|
for (int i = 0; modifiers[i].name; ++i) {
|
||||||
if (txt == S_(modifiers[i].name)) {
|
if (txt == S_(modifiers[i].name)) {
|
||||||
ArdourKeyboard::set_trim_contents_modifier (modifiers[i].modifier);
|
ArdourKeyboard::set_slip_contents_modifier (modifiers[i].modifier);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1052,7 +1052,7 @@ private:
|
||||||
ArdourKeyboard::set_push_points_modifier (Keyboard::PrimaryModifier | Keyboard::Level4Modifier);
|
ArdourKeyboard::set_push_points_modifier (Keyboard::PrimaryModifier | Keyboard::Level4Modifier);
|
||||||
|
|
||||||
/* when beginning a trim */
|
/* when beginning a trim */
|
||||||
ArdourKeyboard::set_trim_contents_modifier (Keyboard::PrimaryModifier);
|
ArdourKeyboard::set_slip_contents_modifier (Keyboard::PrimaryModifier | Keyboard::TertiaryModifier);
|
||||||
ArdourKeyboard::set_trim_anchored_modifier (Keyboard::PrimaryModifier | Keyboard::TertiaryModifier);
|
ArdourKeyboard::set_trim_anchored_modifier (Keyboard::PrimaryModifier | Keyboard::TertiaryModifier);
|
||||||
ArdourKeyboard::set_note_size_relative_modifier (Keyboard::TertiaryModifier); // XXX better: 2ndary
|
ArdourKeyboard::set_note_size_relative_modifier (Keyboard::TertiaryModifier); // XXX better: 2ndary
|
||||||
|
|
||||||
|
@ -1085,7 +1085,7 @@ private:
|
||||||
ComboBoxText _snap_modifier_combo;
|
ComboBoxText _snap_modifier_combo;
|
||||||
ComboBoxText _snap_delta_combo;
|
ComboBoxText _snap_delta_combo;
|
||||||
ComboBoxText _constraint_modifier_combo;
|
ComboBoxText _constraint_modifier_combo;
|
||||||
ComboBoxText _trim_contents_combo;
|
ComboBoxText _slip_contents_combo;
|
||||||
ComboBoxText _trim_overlap_combo;
|
ComboBoxText _trim_overlap_combo;
|
||||||
ComboBoxText _trim_anchored_combo;
|
ComboBoxText _trim_anchored_combo;
|
||||||
ComboBoxText _trim_jump_combo;
|
ComboBoxText _trim_jump_combo;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user