diff options
-rw-r--r-- | gtk2_ardour/canvas-sysex.cc | 8 | ||||
-rw-r--r-- | gtk2_ardour/canvas-sysex.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/midi_region_view.cc | 20 | ||||
-rw-r--r-- | gtk2_ardour/midi_region_view.h | 2 |
4 files changed, 27 insertions, 6 deletions
diff --git a/gtk2_ardour/canvas-sysex.cc b/gtk2_ardour/canvas-sysex.cc index f8948d596e..ca378fb303 100644 --- a/gtk2_ardour/canvas-sysex.cc +++ b/gtk2_ardour/canvas-sysex.cc @@ -45,6 +45,7 @@ CanvasSysEx::CanvasSysEx( y), _sysex(sysex) { + _text = text; set_text(text); } @@ -83,14 +84,13 @@ CanvasSysEx::on_event(GdkEvent* ev) break; case GDK_ENTER_NOTIFY: - grab_focus(); + _region.sysex_entered (this); return true; break; case GDK_LEAVE_NOTIFY: - /* focus will transfer back via the enter-notify - * event sent to the midi region view. - */ + _region.sysex_left (this); + return true; break; default: diff --git a/gtk2_ardour/canvas-sysex.h b/gtk2_ardour/canvas-sysex.h index 6cee8df97b..c49fcc6df9 100644 --- a/gtk2_ardour/canvas-sysex.h +++ b/gtk2_ardour/canvas-sysex.h @@ -45,11 +45,14 @@ public: virtual ~CanvasSysEx(); const ARDOUR::MidiModel::SysExPtr sysex() const { return _sysex; } + const string text() const { return _text; } virtual bool on_event(GdkEvent* ev); private: const ARDOUR::MidiModel::SysExPtr _sysex; + + string _text; }; } // namespace Canvas diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index 76cbcca226..5d972fa85e 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -3173,6 +3173,24 @@ MidiRegionView::patch_left (ArdourCanvas::CanvasPatchChange *) } void +MidiRegionView::sysex_entered (ArdourCanvas::CanvasSysEx* p) +{ + ostringstream s; + s << p->text(); + show_verbose_cursor (s.str(), 10, 20); + p->grab_focus(); +} + +void +MidiRegionView::sysex_left (ArdourCanvas::CanvasSysEx *) +{ + trackview.editor().verbose_cursor()->hide (); + /* focus will transfer back via the enter-notify event sent to this + * midi region view. + */ +} + +void MidiRegionView::note_mouse_position (float x_fraction, float /*y_fraction*/, bool can_set_cursor) { Editor* editor = dynamic_cast<Editor*>(&trackview.editor()); @@ -3756,8 +3774,6 @@ MidiRegionView::edit_patch_change (ArdourCanvas::CanvasPatchChange* pc) void MidiRegionView::delete_sysex (CanvasSysEx* sysex) { - cerr << "about to delete sysex " << sysex->sysex() << endl; - MidiModel::SysExDiffCommand* c = _model->new_sysex_diff_command (_("delete sysex")); c->remove (sysex->sysex()); _model->apply_command (*trackview.session(), c); diff --git a/gtk2_ardour/midi_region_view.h b/gtk2_ardour/midi_region_view.h index f3dd827b19..ac0736949d 100644 --- a/gtk2_ardour/midi_region_view.h +++ b/gtk2_ardour/midi_region_view.h @@ -185,6 +185,8 @@ public: void note_left(ArdourCanvas::CanvasNoteEvent* ev); void patch_entered (ArdourCanvas::CanvasPatchChange *); void patch_left (ArdourCanvas::CanvasPatchChange *); + void sysex_entered (ArdourCanvas::CanvasSysEx* p); + void sysex_left (ArdourCanvas::CanvasSysEx* p); void note_mouse_position (float xfraction, float yfraction, bool can_set_cursor=true); void unique_select(ArdourCanvas::CanvasNoteEvent* ev); void note_selected(ArdourCanvas::CanvasNoteEvent* ev, bool add, bool extend=false); |