- if (_pressed_button == 1 && editor.current_mouse_mode() == MouseObject
- && !Keyboard::modifier_state_contains (ev->state, Keyboard::insert_note_modifier())) {
-
- editor.drags()->set (new MidiRubberbandSelectDrag (dynamic_cast<Editor *> (&editor), this), (GdkEvent *) ev);
- _mouse_state = SelectRectDragging;
- return true;
-
- } else if (editor.internal_editing()) {
-
- editor.drags()->set (new NoteCreateDrag (dynamic_cast<Editor *> (&editor), group, this), (GdkEvent *) ev);
- _mouse_state = AddDragging;
-
- remove_ghost_note ();
-
- editor.verbose_cursor()->hide ();
-
- return true;
+ if (_pressed_button == 1) {
+
+ MouseMode m = editor.current_mouse_mode();
+
+ if (m == MouseDraw || (m == MouseObject && Keyboard::modifier_state_contains (ev->state, Keyboard::insert_note_modifier()))) {
+
+ editor.drags()->set (new NoteCreateDrag (dynamic_cast<Editor *> (&editor), group, this), (GdkEvent *) ev);
+ _mouse_state = AddDragging;
+ remove_ghost_note ();
+ editor.verbose_cursor()->hide ();
+ return true;
+ } else if (m == MouseObject) {
+ editor.drags()->set (new MidiRubberbandSelectDrag (dynamic_cast<Editor *> (&editor), this), (GdkEvent *) ev);
+ clear_selection ();
+ _mouse_state = SelectRectDragging;
+ return true;
+ } else if (m == MouseRange) {
+ editor.drags()->set (new MidiVerticalSelectDrag (dynamic_cast<Editor *> (&editor), this), (GdkEvent *) ev);
+ _mouse_state = SelectVerticalDragging;
+ return true;
+ }