summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/canvas-sysex.cc8
-rw-r--r--gtk2_ardour/canvas-sysex.h3
-rw-r--r--gtk2_ardour/midi_region_view.cc20
-rw-r--r--gtk2_ardour/midi_region_view.h2
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);