summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor_drag.cc21
-rw-r--r--gtk2_ardour/keyboard.cc109
-rw-r--r--gtk2_ardour/keyboard.h40
-rw-r--r--gtk2_ardour/rc_option_editor.cc48
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/keyboard.h42
-rw-r--r--libs/gtkmm2ext/keyboard.cc120
6 files changed, 190 insertions, 190 deletions
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc
index ca0a126e9d..a34c45545c 100644
--- a/gtk2_ardour/editor_drag.cc
+++ b/gtk2_ardour/editor_drag.cc
@@ -2352,7 +2352,7 @@ NoteResizeDrag::start_grab (GdkEvent* event, Gdk::Cursor* /*ignored*/)
_item->grab ();
- if (event->motion.state & Keyboard::note_size_relative_modifier ()) {
+ if (event->motion.state & ArdourKeyboard::note_size_relative_modifier ()) {
relative = false;
} else {
relative = true;
@@ -2615,7 +2615,7 @@ TrimDrag::start_grab (GdkEvent* event, Gdk::Cursor*)
framepos_t const pf = adjusted_current_frame (event);
setup_snap_delta (region_start);
- if (Keyboard::modifier_state_equals (event->button.state, Keyboard::trim_contents_modifier ())) {
+ if (Keyboard::modifier_state_equals (event->button.state, ArdourKeyboard::trim_contents_modifier ())) {
/* Move the contents of the region around without changing the region bounds */
_operation = ContentsTrim;
Drag::start_grab (event, _editor->cursors()->trimmer);
@@ -2624,7 +2624,7 @@ TrimDrag::start_grab (GdkEvent* event, Gdk::Cursor*)
if (pf < (region_start + region_length/2)) {
/* closer to front */
_operation = StartTrim;
- if (Keyboard::modifier_state_equals (event->button.state, Keyboard::trim_anchored_modifier ())) {
+ if (Keyboard::modifier_state_equals (event->button.state, ArdourKeyboard::trim_anchored_modifier ())) {
Drag::start_grab (event, _editor->cursors()->anchored_left_side_trim);
} else {
Drag::start_grab (event, _editor->cursors()->left_side_trim);
@@ -2632,17 +2632,18 @@ TrimDrag::start_grab (GdkEvent* event, Gdk::Cursor*)
} else {
/* closer to end */
_operation = EndTrim;
- if (Keyboard::modifier_state_equals (event->button.state, Keyboard::trim_anchored_modifier ())) {
+ if (Keyboard::modifier_state_equals (event->button.state, ArdourKeyboard::trim_anchored_modifier ())) {
Drag::start_grab (event, _editor->cursors()->anchored_right_side_trim);
} else {
Drag::start_grab (event, _editor->cursors()->right_side_trim);
}
}
}
-
+ /* jump trim disabled for now
if (Keyboard::modifier_state_equals (event->button.state, Keyboard::trim_jump_modifier ())) {
_jump_position_when_done = true;
}
+ */
switch (_operation) {
case StartTrim:
@@ -2725,7 +2726,7 @@ TrimDrag::motion (GdkEvent* event, bool first_move)
bool non_overlap_trim = false;
- if (event && Keyboard::modifier_state_equals (event->button.state, Keyboard::trim_overlap_modifier ())) {
+ if (event && Keyboard::modifier_state_equals (event->button.state, ArdourKeyboard::trim_overlap_modifier ())) {
non_overlap_trim = true;
}
@@ -3735,7 +3736,7 @@ MarkerDrag::motion (GdkEvent* event, bool)
framepos_t const newframe = adjusted_current_frame (event);
framepos_t next = newframe;
- if (Keyboard::modifier_state_equals (event->button.state, Keyboard::push_points_modifier ())) {
+ if (Keyboard::modifier_state_equals (event->button.state, ArdourKeyboard::push_points_modifier ())) {
move_both = true;
}
@@ -4002,7 +4003,7 @@ ControlPointDrag::start_grab (GdkEvent* event, Gdk::Cursor* /*cursor*/)
show_verbose_cursor_text (_point->line().get_verbose_cursor_string (fraction));
- _pushing = Keyboard::modifier_state_contains (event->button.state, Keyboard::push_points_modifier ());
+ _pushing = Keyboard::modifier_state_contains (event->button.state, ArdourKeyboard::push_points_modifier ());
if (!_point->can_slide ()) {
_x_constrained = true;
@@ -4015,7 +4016,7 @@ ControlPointDrag::motion (GdkEvent* event, bool)
double dx = _drags->current_pointer_x() - last_pointer_x();
double dy = current_pointer_y() - last_pointer_y();
- if (event->button.state & Keyboard::fine_adjust_modifier ()) {
+ if (event->button.state & ArdourKeyboard::fine_adjust_modifier ()) {
dx *= 0.1;
dy *= 0.1;
}
@@ -4154,7 +4155,7 @@ LineDrag::motion (GdkEvent* event, bool)
{
double dy = current_pointer_y() - last_pointer_y();
- if (event->button.state & Keyboard::fine_adjust_modifier ()) {
+ if (event->button.state & ArdourKeyboard::fine_adjust_modifier ()) {
dy *= 0.1;
}
diff --git a/gtk2_ardour/keyboard.cc b/gtk2_ardour/keyboard.cc
index ca65a2b3f2..2eac66af88 100644
--- a/gtk2_ardour/keyboard.cc
+++ b/gtk2_ardour/keyboard.cc
@@ -48,6 +48,13 @@ accel_map_changed (GtkAccelMap* /*map*/,
me->ui.setup_tooltips ();
}
+guint ArdourKeyboard::trim_contents_mod = Keyboard::PrimaryModifier;
+guint ArdourKeyboard::trim_overlap_mod = Keyboard::TertiaryModifier;
+guint ArdourKeyboard::trim_anchored_mod = Keyboard::TertiaryModifier;
+guint ArdourKeyboard::fine_adjust_mod = Keyboard::SecondaryModifier;
+guint ArdourKeyboard::push_points_mod = Keyboard::PrimaryModifier;
+guint ArdourKeyboard::note_size_relative_mod = Keyboard::PrimaryModifier;
+
void
ArdourKeyboard::setup_keybindings ()
{
@@ -174,6 +181,108 @@ ArdourKeyboard::setup_keybindings ()
g_signal_connect (accelmap, "changed", (GCallback) accel_map_changed, this);
}
+XMLNode&
+ArdourKeyboard::get_state (void)
+{
+ XMLNode* node = &Keyboard::get_state ();
+ char buf[32];
+
+ snprintf (buf, sizeof (buf), "%d", trim_contents_mod);
+ node->add_property ("trim-contents-modifier", buf);
+ snprintf (buf, sizeof (buf), "%d", trim_overlap_mod);
+ node->add_property ("trim-overlap-modifier", buf);
+ snprintf (buf, sizeof (buf), "%d", trim_anchored_mod);
+ node->add_property ("trim-anchored-modifier", buf);
+ snprintf (buf, sizeof (buf), "%d", fine_adjust_mod);
+ node->add_property ("fine-adjust-modifier", buf);
+ snprintf (buf, sizeof (buf), "%d", push_points_mod);
+ node->add_property ("push-points-modifier", buf);
+ snprintf (buf, sizeof (buf), "%d", note_size_relative_mod);
+ node->add_property ("note-size-relative-modifier", buf);
+
+ return *node;
+}
+
+int
+ArdourKeyboard::set_state (const XMLNode& node, int version)
+{
+ const XMLProperty* prop;
+
+ if ((prop = node.property ("trim-contents-modifier")) != 0) {
+ sscanf (prop->value().c_str(), "%d", &trim_contents_mod);
+ }
+
+ if ((prop = node.property ("trim-overlap-modifier")) != 0) {
+ sscanf (prop->value().c_str(), "%d", &trim_overlap_mod);
+ }
+
+ if ((prop = node.property ("trim-anchored-modifier")) != 0) {
+ sscanf (prop->value().c_str(), "%d", &trim_anchored_mod);
+ }
+
+ if ((prop = node.property ("fine-adjust-modifier")) != 0) {
+ sscanf (prop->value().c_str(), "%d", &fine_adjust_mod);
+ }
+
+ if ((prop = node.property ("push-points-modifier")) != 0) {
+ sscanf (prop->value().c_str(), "%d", &push_points_mod);
+ }
+
+ if ((prop = node.property ("note-size-relative-modifier")) != 0) {
+ sscanf (prop->value().c_str(), "%d", &note_size_relative_mod);
+ }
+
+ return Keyboard::set_state (node, version);
+}
+
+void
+ArdourKeyboard::set_trim_contents_modifier (guint mod)
+{
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~trim_contents_mod);
+ trim_contents_mod = mod;
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | trim_contents_mod);
+}
+
+void
+ArdourKeyboard::set_trim_overlap_modifier (guint mod)
+{
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~trim_overlap_mod);
+ trim_overlap_mod = mod;
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | trim_overlap_mod);
+}
+
+void
+ArdourKeyboard::set_trim_anchored_modifier (guint mod)
+{
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~trim_anchored_mod);
+ trim_anchored_mod = mod;
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | trim_anchored_mod);
+}
+
+void
+ArdourKeyboard::set_fine_adjust_modifier (guint mod)
+{
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~fine_adjust_mod);
+ fine_adjust_mod = mod;
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | fine_adjust_mod);
+}
+
+void
+ArdourKeyboard::set_push_points_modifier (guint mod)
+{
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~push_points_mod);
+ push_points_mod = mod;
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | push_points_mod);
+}
+
+void
+ArdourKeyboard::set_note_size_relative_modifier (guint mod)
+{
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~note_size_relative_mod);
+ note_size_relative_mod = mod;
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | note_size_relative_mod);
+}
+
Selection::Operation
ArdourKeyboard::selection_type (guint state)
{
diff --git a/gtk2_ardour/keyboard.h b/gtk2_ardour/keyboard.h
index 6a689567e5..95e40f6e3e 100644
--- a/gtk2_ardour/keyboard.h
+++ b/gtk2_ardour/keyboard.h
@@ -32,11 +32,51 @@ class ArdourKeyboard : public Gtkmm2ext::Keyboard
public:
ArdourKeyboard(ARDOUR_UI& ardour_ui) : ui(ardour_ui) {}
+ XMLNode& get_state (void);
+ int set_state (const XMLNode&, int version);
+
void setup_keybindings ();
static Selection::Operation selection_type (guint state);
ARDOUR_UI& ui;
+
+ static void set_trim_contents_modifier (guint);
+ /** @return Modifier mask to move contents rather than region bounds during trim;
+ */
+ static ModifierMask trim_contents_modifier () { return ModifierMask (trim_contents_mod); }
+
+ static void set_trim_overlap_modifier (guint);
+ /** @return Modifier mask to remove region overlaps during trim;
+ */
+ static ModifierMask trim_overlap_modifier () { return ModifierMask (trim_overlap_mod); }
+
+ static void set_trim_anchored_modifier (guint);
+ /** @return Modifier mask to use anchored trim;
+ */
+ static ModifierMask trim_anchored_modifier () { return ModifierMask (trim_anchored_mod); }
+
+ static void set_fine_adjust_modifier (guint);
+ /** @return Modifier mask to fine adjust (control points only atm);
+ */
+ static ModifierMask fine_adjust_modifier () { return ModifierMask (fine_adjust_mod); }
+
+ static void set_push_points_modifier (guint);
+ /** @return Modifier mask to push proceeding points;
+ */
+ static ModifierMask push_points_modifier () { return ModifierMask (push_points_mod); }
+
+ static void set_note_size_relative_modifier (guint);
+ /** @return Modifier mask to resize notes relatively;
+ */
+ static ModifierMask note_size_relative_modifier () { return ModifierMask (note_size_relative_mod); }
+private:
+ static guint trim_contents_mod;
+ static guint trim_overlap_mod;
+ static guint trim_anchored_mod;
+ static guint fine_adjust_mod;
+ static guint push_points_mod;
+ static guint note_size_relative_mod;
};
#endif /* __ardour_keyboard_h__ */
diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc
index 4fefcfada1..65589abf9e 100644
--- a/gtk2_ardour/rc_option_editor.cc
+++ b/gtk2_ardour/rc_option_editor.cc
@@ -277,14 +277,15 @@ static const struct {
#else
{ "Key|Shift", GDK_SHIFT_MASK },
{ "Control", GDK_CONTROL_MASK },
- { "Alt (Mod1)", GDK_MOD1_MASK },
+ { "Alt", GDK_MOD1_MASK },
{ "Control-Shift", GDK_CONTROL_MASK|GDK_SHIFT_MASK },
{ "Control-Alt", GDK_CONTROL_MASK|GDK_MOD1_MASK },
{ "Shift-Alt", GDK_SHIFT_MASK|GDK_MOD1_MASK },
{ "Control-Shift-Alt", GDK_CONTROL_MASK|GDK_SHIFT_MASK|GDK_MOD1_MASK },
+ { "Alt-Windows", GDK_MOD1_MASK|GDK_MOD4_MASK },
{ "Mod2", GDK_MOD2_MASK },
{ "Mod3", GDK_MOD3_MASK },
- { "Mod4", GDK_MOD4_MASK },
+ { "Windows", GDK_MOD4_MASK },
{ "Mod5", GDK_MOD5_MASK },
#endif
{ 0, 0 }
@@ -465,7 +466,7 @@ public:
_trim_contents_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::trim_contents_modifier_chosen));
for (int x = 0; modifiers[x].name; ++x) {
- if (modifiers[x].modifier == (guint) Keyboard::trim_contents_modifier ()) {
+ if (modifiers[x].modifier == (guint) ArdourKeyboard::trim_contents_modifier ()) {
_trim_contents_combo.set_active_text (S_(modifiers[x].name));
break;
}
@@ -485,7 +486,7 @@ public:
_trim_anchored_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::trim_anchored_modifier_chosen));
for (int x = 0; modifiers[x].name; ++x) {
- if (modifiers[x].modifier == (guint) Keyboard::trim_anchored_modifier ()) {
+ if (modifiers[x].modifier == (guint) ArdourKeyboard::trim_anchored_modifier ()) {
_trim_anchored_combo.set_active_text (S_(modifiers[x].name));
break;
}
@@ -499,9 +500,9 @@ public:
t->attach (_trim_anchored_combo, col, col + 1, row, row + 1, FILL | EXPAND, FILL);
++row;
- col = 1;
+ col = 1;
- /* jump trim */
+ /* jump trim disabled for now
set_popdown_strings (_trim_jump_combo, dumb);
_trim_jump_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::trim_jump_modifier_chosen));
@@ -521,13 +522,14 @@ public:
++row;
col = 1;
+ */
/* note resize relative */
set_popdown_strings (_note_size_relative_combo, dumb);
_note_size_relative_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::note_size_relative_modifier_chosen));
for (int x = 0; modifiers[x].name; ++x) {
- if (modifiers[x].modifier == (guint) Keyboard::note_size_relative_modifier ()) {
+ if (modifiers[x].modifier == (guint) ArdourKeyboard::note_size_relative_modifier ()) {
_note_size_relative_combo.set_active_text (S_(modifiers[x].name));
break;
}
@@ -600,7 +602,7 @@ public:
_trim_overlap_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::trim_overlap_modifier_chosen));
for (int x = 0; modifiers[x].name; ++x) {
- if (modifiers[x].modifier == (guint) Keyboard::trim_overlap_modifier ()) {
+ if (modifiers[x].modifier == (guint) ArdourKeyboard::trim_overlap_modifier ()) {
_trim_overlap_combo.set_active_text (S_(modifiers[x].name));
break;
}
@@ -626,7 +628,7 @@ public:
_fine_adjust_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::fine_adjust_modifier_chosen));
for (int x = 0; modifiers[x].name; ++x) {
- if (modifiers[x].modifier == (guint) Keyboard::fine_adjust_modifier ()) {
+ if (modifiers[x].modifier == (guint) ArdourKeyboard::fine_adjust_modifier ()) {
_fine_adjust_combo.set_active_text (S_(modifiers[x].name));
break;
}
@@ -646,7 +648,7 @@ public:
_push_points_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::push_points_modifier_chosen));
for (int x = 0; modifiers[x].name; ++x) {
- if (modifiers[x].modifier == (guint) Keyboard::push_points_modifier ()) {
+ if (modifiers[x].modifier == (guint) ArdourKeyboard::push_points_modifier ()) {
_push_points_combo.set_active_text (S_(modifiers[x].name));
break;
}
@@ -658,8 +660,6 @@ public:
t->attach (*l, col, col + 1, row, row + 1, FILL | EXPAND, FILL);
t->attach (_push_points_combo, col + 1, col + 2, row, row + 1, FILL | EXPAND, FILL);
- ++row;
-
_box->pack_start (*t, false, false);
}
@@ -768,7 +768,7 @@ private:
for (int i = 0; modifiers[i].name; ++i) {
if (txt == _(modifiers[i].name)) {
- Keyboard::set_trim_contents_modifier (modifiers[i].modifier);
+ ArdourKeyboard::set_trim_contents_modifier (modifiers[i].modifier);
break;
}
}
@@ -780,7 +780,7 @@ private:
for (int i = 0; modifiers[i].name; ++i) {
if (txt == _(modifiers[i].name)) {
- Keyboard::set_trim_overlap_modifier (modifiers[i].modifier);
+ ArdourKeyboard::set_trim_overlap_modifier (modifiers[i].modifier);
break;
}
}
@@ -792,19 +792,7 @@ private:
for (int i = 0; modifiers[i].name; ++i) {
if (txt == _(modifiers[i].name)) {
- Keyboard::set_trim_anchored_modifier (modifiers[i].modifier);
- break;
- }
- }
- }
-
- void trim_jump_modifier_chosen ()
- {
- string const txt = _trim_jump_combo.get_active_text();
-
- for (int i = 0; modifiers[i].name; ++i) {
- if (txt == _(modifiers[i].name)) {
- Keyboard::set_trim_jump_modifier (modifiers[i].modifier);
+ ArdourKeyboard::set_trim_anchored_modifier (modifiers[i].modifier);
break;
}
}
@@ -816,7 +804,7 @@ private:
for (int i = 0; modifiers[i].name; ++i) {
if (txt == _(modifiers[i].name)) {
- Keyboard::set_fine_adjust_modifier (modifiers[i].modifier);
+ ArdourKeyboard::set_fine_adjust_modifier (modifiers[i].modifier);
break;
}
}
@@ -828,7 +816,7 @@ private:
for (int i = 0; modifiers[i].name; ++i) {
if (txt == _(modifiers[i].name)) {
- Keyboard::set_push_points_modifier (modifiers[i].modifier);
+ ArdourKeyboard::set_push_points_modifier (modifiers[i].modifier);
break;
}
}
@@ -840,7 +828,7 @@ private:
for (int i = 0; modifiers[i].name; ++i) {
if (txt == _(modifiers[i].name)) {
- Keyboard::set_note_size_relative_modifier (modifiers[i].modifier);
+ ArdourKeyboard::set_note_size_relative_modifier (modifiers[i].modifier);
break;
}
}
diff --git a/libs/gtkmm2ext/gtkmm2ext/keyboard.h b/libs/gtkmm2ext/gtkmm2ext/keyboard.h
index a10a6dbb3e..25c5154024 100644
--- a/libs/gtkmm2ext/gtkmm2ext/keyboard.h
+++ b/libs/gtkmm2ext/gtkmm2ext/keyboard.h
@@ -126,41 +126,6 @@ class LIBGTKMM2EXT_API Keyboard : public sigc::trackable, PBD::Stateful
*/
static ModifierMask snap_delta_modifier () { return ModifierMask (snap_delta_mod); }
- static void set_trim_contents_modifier (guint);
- /** @return Modifier mask to move contents rather than region bounds during trim;
- */
- static ModifierMask trim_contents_modifier () { return ModifierMask (trim_contents_mod); }
-
- static void set_trim_overlap_modifier (guint);
- /** @return Modifier mask to remove region overlaps during trim;
- */
- static ModifierMask trim_overlap_modifier () { return ModifierMask (trim_overlap_mod); }
-
- static void set_trim_anchored_modifier (guint);
- /** @return Modifier mask to use anchored trim;
- */
- static ModifierMask trim_anchored_modifier () { return ModifierMask (trim_anchored_mod); }
-
- static void set_fine_adjust_modifier (guint);
- /** @return Modifier mask to fine adjust (control points only atm);
- */
- static ModifierMask fine_adjust_modifier () { return ModifierMask (fine_adjust_mod); }
-
- static void set_push_points_modifier (guint);
- /** @return Modifier mask to push proceeding points;
- */
- static ModifierMask push_points_modifier () { return ModifierMask (push_points_mod); }
-
- static void set_note_size_relative_modifier (guint);
- /** @return Modifier mask to resize notes relatively;
- */
- static ModifierMask note_size_relative_modifier () { return ModifierMask (note_size_relative_mod); }
-
- static void set_trim_jump_modifier (guint);
- /** @return Modifier mask to jump position after trim;
- */
- static ModifierMask trim_jump_modifier () { return ModifierMask (trim_jump_mod); }
-
static guint edit_button() { return edit_but; }
static void set_edit_button (guint);
static guint edit_modifier() { return edit_mod; }
@@ -226,13 +191,6 @@ class LIBGTKMM2EXT_API Keyboard : public sigc::trackable, PBD::Stateful
static guint insert_note_mod;
static guint snap_mod;
static guint snap_delta_mod;
- static guint trim_contents_mod;
- static guint trim_overlap_mod;
- static guint trim_anchored_mod;
- static guint fine_adjust_mod;
- static guint push_points_mod;
- static guint note_size_relative_mod;
- static guint trim_jump_mod;
static guint button2_modifiers;
static Gtk::Window* current_window;
static std::string user_keybindings_path;
diff --git a/libs/gtkmm2ext/keyboard.cc b/libs/gtkmm2ext/keyboard.cc
index 17e41a4b85..954887e3be 100644
--- a/libs/gtkmm2ext/keyboard.cc
+++ b/libs/gtkmm2ext/keyboard.cc
@@ -58,8 +58,6 @@ guint Keyboard::delete_but = 3;
guint Keyboard::delete_mod = GDK_SHIFT_MASK;
guint Keyboard::insert_note_but = 1;
guint Keyboard::insert_note_mod = GDK_CONTROL_MASK;
-guint Keyboard::snap_mod = GDK_MOD3_MASK;
-guint Keyboard::snap_delta_mod = 0;
#ifdef GTKOSX
@@ -78,6 +76,9 @@ const char* Keyboard::level4_modifier_name() { return _("Option"); }
const char* Keyboard::copy_modifier_name() { return _("Control"); }
const char* Keyboard::rangeselect_modifier_name() { return S_("Key|Shift"); }
+guint Keyboard::snap_mod = GDK_MOD3_MASK|Keyboard::Level4Modifier; // XXX this is probably completely wrong
+guint Keyboard::snap_delta_mod = GDK_MOD3_MASK;
+
#else
guint Keyboard::PrimaryModifier = GDK_CONTROL_MASK; // Control
@@ -95,6 +96,9 @@ const char* Keyboard::level4_modifier_name() { return _("Meta"); }
const char* Keyboard::copy_modifier_name() { return _("Control"); }
const char* Keyboard::rangeselect_modifier_name() { return S_("Key|Shift"); }
+guint Keyboard::snap_mod = Keyboard::SecondaryModifier|Keyboard::Level4Modifier;
+guint Keyboard::snap_delta_mod = Keyboard::SecondaryModifier;
+
#endif
guint Keyboard::GainFineScaleModifier = Keyboard::PrimaryModifier;
@@ -104,14 +108,6 @@ guint Keyboard::ScrollZoomVerticalModifier = Keyboard::SecondaryModifier;
guint Keyboard::ScrollZoomHorizontalModifier = Keyboard::PrimaryModifier;
guint Keyboard::ScrollHorizontalModifier = Keyboard::TertiaryModifier;
-guint Keyboard::trim_contents_mod = Keyboard::PrimaryModifier;
-guint Keyboard::trim_overlap_mod = Keyboard::TertiaryModifier;
-guint Keyboard::trim_anchored_mod = Keyboard::TertiaryModifier;
-guint Keyboard::trim_jump_mod = Keyboard::TertiaryModifier;
-guint Keyboard::fine_adjust_mod = Keyboard::SecondaryModifier;
-guint Keyboard::push_points_mod = Keyboard::PrimaryModifier;
-guint Keyboard::note_size_relative_mod = Keyboard::PrimaryModifier;
-
Keyboard* Keyboard::_the_keyboard = 0;
Gtk::Window* Keyboard::current_window = 0;
bool Keyboard::_some_magic_widget_has_focus = false;
@@ -177,6 +173,8 @@ Keyboard::get_state (void)
XMLNode* node = new XMLNode ("Keyboard");
char buf[32];
+ snprintf (buf, sizeof (buf), "%d", CopyModifier);
+ node->add_property ("copy-modifier", buf);
snprintf (buf, sizeof (buf), "%d", edit_but);
node->add_property ("edit-button", buf);
snprintf (buf, sizeof (buf), "%d", edit_mod);
@@ -189,20 +187,6 @@ Keyboard::get_state (void)
node->add_property ("snap-modifier", buf);
snprintf (buf, sizeof (buf), "%d", snap_delta_mod);
node->add_property ("snap-delta-modifier", buf);
- snprintf (buf, sizeof (buf), "%d", trim_contents_mod);
- node->add_property ("trim-contents-modifier", buf);
- snprintf (buf, sizeof (buf), "%d", trim_overlap_mod);
- node->add_property ("trim-overlap-modifier", buf);
- snprintf (buf, sizeof (buf), "%d", trim_anchored_mod);
- node->add_property ("trim-anchored-modifier", buf);
- snprintf (buf, sizeof (buf), "%d", trim_jump_mod);
- node->add_property ("trim-jump-modifier", buf);
- snprintf (buf, sizeof (buf), "%d", fine_adjust_mod);
- node->add_property ("fine-adjust-modifier", buf);
- snprintf (buf, sizeof (buf), "%d", push_points_mod);
- node->add_property ("push-points-modifier", buf);
- snprintf (buf, sizeof (buf), "%d", note_size_relative_mod);
- node->add_property ("note-size-relative-modifier", buf);
snprintf (buf, sizeof (buf), "%d", insert_note_but);
node->add_property ("insert-note-button", buf);
snprintf (buf, sizeof (buf), "%d", insert_note_mod);
@@ -216,6 +200,10 @@ Keyboard::set_state (const XMLNode& node, int /*version*/)
{
const XMLProperty* prop;
+ if ((prop = node.property ("copy-modifier")) != 0) {
+ sscanf (prop->value().c_str(), "%d", &CopyModifier);
+ }
+
if ((prop = node.property ("edit-button")) != 0) {
sscanf (prop->value().c_str(), "%d", &edit_but);
}
@@ -240,34 +228,6 @@ Keyboard::set_state (const XMLNode& node, int /*version*/)
sscanf (prop->value().c_str(), "%d", &snap_delta_mod);
}
- if ((prop = node.property ("trim-contents-modifier")) != 0) {
- sscanf (prop->value().c_str(), "%d", &trim_contents_mod);
- }
-
- if ((prop = node.property ("trim-overlap-modifier")) != 0) {
- sscanf (prop->value().c_str(), "%d", &trim_overlap_mod);
- }
-
- if ((prop = node.property ("trim-anchored-modifier")) != 0) {
- sscanf (prop->value().c_str(), "%d", &trim_anchored_mod);
- }
-
- if ((prop = node.property ("trim-jump-modifier")) != 0) {
- sscanf (prop->value().c_str(), "%d", &trim_jump_mod);
- }
-
- if ((prop = node.property ("fine-adjust-modifier")) != 0) {
- sscanf (prop->value().c_str(), "%d", &fine_adjust_mod);
- }
-
- if ((prop = node.property ("push-points-modifier")) != 0) {
- sscanf (prop->value().c_str(), "%d", &push_points_mod);
- }
-
- if ((prop = node.property ("note-size-relative-modifier")) != 0) {
- sscanf (prop->value().c_str(), "%d", &note_size_relative_mod);
- }
-
if ((prop = node.property ("insert-note-button")) != 0) {
sscanf (prop->value().c_str(), "%d", &insert_note_but);
}
@@ -530,62 +490,6 @@ Keyboard::set_snap_delta_modifier (guint mod)
RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | snap_delta_mod);
}
-void
-Keyboard::set_trim_contents_modifier (guint mod)
-{
- RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~trim_contents_mod);
- trim_contents_mod = mod;
- RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | trim_contents_mod);
-}
-
-void
-Keyboard::set_trim_overlap_modifier (guint mod)
-{
- RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~trim_overlap_mod);
- trim_overlap_mod = mod;
- RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | trim_overlap_mod);
-}
-
-void
-Keyboard::set_trim_anchored_modifier (guint mod)
-{
- RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~trim_anchored_mod);
- trim_anchored_mod = mod;
- RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | trim_anchored_mod);
-}
-
-void
-Keyboard::set_trim_jump_modifier (guint mod)
-{
- RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~trim_jump_mod);
- trim_jump_mod = mod;
- RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | trim_jump_mod);
-}
-
-void
-Keyboard::set_fine_adjust_modifier (guint mod)
-{
- RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~fine_adjust_mod);
- fine_adjust_mod = mod;
- RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | fine_adjust_mod);
-}
-
-void
-Keyboard::set_push_points_modifier (guint mod)
-{
- RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~push_points_mod);
- push_points_mod = mod;
- RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | push_points_mod);
-}
-
-void
-Keyboard::set_note_size_relative_modifier (guint mod)
-{
- RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~note_size_relative_mod);
- note_size_relative_mod = mod;
- RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | note_size_relative_mod);
-}
-
bool
Keyboard::is_edit_event (GdkEventButton *ev)
{