diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-08-18 02:37:57 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-08-18 02:37:57 +0000 |
commit | b116282bbb91404f5772643473485e23946a9b40 (patch) | |
tree | f7e7239e4a10a9a9df1a1274dedb0bae781e513c /gtk2_ardour/canvas-note-event.cc | |
parent | 3162ffb4f418d85088d53d5e0a4a5d6ce7235e04 (diff) |
make shift-click for extend-selection sort-of work for MIDI
git-svn-id: svn://localhost/ardour2/branches/3.0@5541 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/canvas-note-event.cc')
-rw-r--r-- | gtk2_ardour/canvas-note-event.cc | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/gtk2_ardour/canvas-note-event.cc b/gtk2_ardour/canvas-note-event.cc index 20e0880f05..145ee5e0ba 100644 --- a/gtk2_ardour/canvas-note-event.cc +++ b/gtk2_ardour/canvas-note-event.cc @@ -325,22 +325,21 @@ CanvasNoteEvent::on_event(GdkEvent* ev) case Pressed: // Clicked if (editor.current_mouse_mode() == Editing::MouseRange) { _state = None; - if (_selected && !select_mod && _region.selection_size() > 1) { - _region.unique_select(this); - } else if (_selected) { + if (_selected) { _region.note_deselected(this, select_mod); } else { - _region.note_selected(this, select_mod); + bool extend = Keyboard::modifier_state_equals (ev->motion.state, Keyboard::TertiaryModifier); + bool add = Keyboard::modifier_state_equals (ev->motion.state, Keyboard::PrimaryModifier); + + if (!extend && !add && _region.selection_size() > 1) { + _region.unique_select(this); + } else { + _region.note_selected (this, (extend ? true : add), extend); + } } -#if 0 - } else if (midi_edit_mode == Editing::MidiEditErase) { - _region.start_delta_command(); - _region.command_remove_note(this); - _region.apply_command(); -#endif } - return true; + case Dragging: // Dropped _item->ungrab(ev->button.time); _state = None; |