summaryrefslogtreecommitdiff
path: root/gtk2_ardour/midi_region_view.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-09-21 15:15:06 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-09-21 15:15:06 +0000
commit90e73a3a6dc196f8295291eca7e67e85595b82d4 (patch)
tree7e37d218a30f5e6f8320301b3664ce5668809c86 /gtk2_ardour/midi_region_view.cc
parente6ecd36b266c173a65371d50cde5b955072a98ff (diff)
(1) remove almost-never used block/unlock_property_changes() methods from PBD::Stateful (2) hide used and path columns from region list (3) detect mouse position within MIDI notes and thus allow move or trim from the same mouse mode (object or trim; first & last 1/4 of each note is for trimming
git-svn-id: svn://localhost/ardour2/branches/3.0@7823 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/midi_region_view.cc')
-rw-r--r--gtk2_ardour/midi_region_view.cc22
1 files changed, 19 insertions, 3 deletions
diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc
index 20b93b71e5..94083bf73d 100644
--- a/gtk2_ardour/midi_region_view.cc
+++ b/gtk2_ardour/midi_region_view.cc
@@ -49,6 +49,7 @@
#include "canvas-hit.h"
#include "canvas-note.h"
#include "canvas-program-change.h"
+#include "editor.h"
#include "ghostregion.h"
#include "gui_thread.h"
#include "keyboard.h"
@@ -2646,6 +2647,10 @@ MidiRegionView::change_channel(uint8_t channel)
void
MidiRegionView::note_entered(ArdourCanvas::CanvasNoteEvent* ev)
{
+ Editor* editor = dynamic_cast<Editor*>(&trackview.editor());
+
+ pre_enter_cursor = editor->get_canvas_cursor ();
+
if (_mouse_state == SelectTouchDragging) {
note_selected (ev, true);
}
@@ -2656,17 +2661,28 @@ MidiRegionView::note_entered(ArdourCanvas::CanvasNoteEvent* ev)
void
MidiRegionView::note_left (ArdourCanvas::CanvasNoteEvent* note)
{
+ Editor* editor = dynamic_cast<Editor*>(&trackview.editor());
+
for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) {
(*i)->hide_velocity ();
}
- trackview.editor().hide_verbose_canvas_cursor ();
+ editor->hide_verbose_canvas_cursor ();
+ editor->set_canvas_cursor (pre_enter_cursor);
}
void
-MidiRegionView::note_motion (float fraction)
+MidiRegionView::note_mouse_position (float x_fraction, float y_fraction)
{
- cerr << "Now at " << fraction << " within note\n";
+ Editor* editor = dynamic_cast<Editor*>(&trackview.editor());
+
+ if (x_fraction > 0.0 && x_fraction < 0.25) {
+ editor->set_canvas_cursor (editor->left_side_trim_cursor);
+ } else if (x_fraction >= 0.75 && x_fraction < 1.0) {
+ editor->set_canvas_cursor (editor->right_side_trim_cursor);
+ } else {
+ editor->set_canvas_cursor (pre_enter_cursor);
+ }
}
void