diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-09-08 21:45:44 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-09-08 21:45:44 +0000 |
commit | 1bf79fa88502a156a71cd3d2de35aa234950c40c (patch) | |
tree | d17b2e9ed485511ac557647c4b331054c1d477c0 /gtk2_ardour/canvas-note.cc | |
parent | 539c8361de35364effe804e2db184790226b340a (diff) |
move note drag & note resize mouse handling up into the Drag/Editor infrastructure/level
git-svn-id: svn://localhost/ardour2/branches/3.0@5641 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/canvas-note.cc')
-rw-r--r-- | gtk2_ardour/canvas-note.cc | 82 |
1 files changed, 4 insertions, 78 deletions
diff --git a/gtk2_ardour/canvas-note.cc b/gtk2_ardour/canvas-note.cc index f51a58ff5f..b43514edcc 100644 --- a/gtk2_ardour/canvas-note.cc +++ b/gtk2_ardour/canvas-note.cc @@ -11,84 +11,10 @@ namespace Canvas { bool CanvasNote::on_event(GdkEvent* ev) { - PublicEditor& editor (_region.get_trackview().editor()); - - if (!editor.internal_editing()) { - return false; - } - - double event_x; - static double middle_point, last_x; - Gdk::Cursor cursor; - static NoteEnd note_end; - - switch (ev->type) { - case GDK_BUTTON_PRESS: - if (ev->button.button == 2 || - (ev->button.button == 1 && editor.current_mouse_mode() == Editing::MouseTimeFX)) { - double region_start = _region.get_position_pixels(); - event_x = ev->button.x; - middle_point = region_start + x1() + (x2() - x1()) / 2.0L; - - if (event_x <= middle_point) { - cursor = Gdk::Cursor(Gdk::LEFT_SIDE); - note_end = NOTE_ON; - } else { - cursor = Gdk::Cursor(Gdk::RIGHT_SIDE); - note_end = NOTE_OFF; - } - - _item->grab(GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, cursor, ev->motion.time); - - if (_region.mouse_state() == MidiRegionView::SelectTouchDragging) { - _note_state = AbsoluteResize; - } else { - _note_state = RelativeResize; - } - - _region.note_selected(this, true); - _region.begin_resizing(note_end); - last_x = event_x; - - return true; - } - - case GDK_MOTION_NOTIFY: - event_x = ev->motion.x; - - if (_note_state == RelativeResize) { - _region.update_resizing(note_end, event_x - last_x, true); - last_x = event_x; - return true; - } - - if (_note_state == AbsoluteResize) { - _region.update_resizing(note_end, event_x, false); - return true; - } - - case GDK_BUTTON_RELEASE: - event_x = ev->button.x; - - switch (_note_state) { - case RelativeResize: // Clicked - _item->ungrab(ev->button.time); - _region.commit_resizing(note_end, event_x, true); - _note_state = None; - return true; - - case AbsoluteResize: // Clicked - _item->ungrab(ev->button.time); - _region.commit_resizing(note_end, event_x, false); - _note_state = None; - return true; - - default: - return CanvasNoteEvent::on_event(ev); - } - - default: - return CanvasNoteEvent::on_event(ev); + if (!_region.get_trackview().editor().canvas_note_event (ev, this)) { + return CanvasNoteEvent::on_event (ev); + } else { + return true; } } |