#include <glibmm/regex.h>
#include "gtkmm2ext/keyboard.h"
+#include "gtkmm2ext/utils.h"
+
#include "ardour/midi_patch_manager.h"
+
+#include "canvas/debug.h"
+
#include "ardour_ui.h"
#include "midi_region_view.h"
#include "patch_change.h"
*/
PatchChange::PatchChange(
MidiRegionView& region,
- ArdourCanvas::Group* parent,
+ ArdourCanvas::Container* parent,
const string& text,
double height,
double x,
_flag = new ArdourCanvas::Flag (
parent,
height,
- ARDOUR_UI::config()->get_canvasvar_MidiPatchChangeOutline(),
- ARDOUR_UI::config()->get_canvasvar_MidiPatchChangeFill(),
+ ARDOUR_UI::config()->get_MidiPatchChangeOutline(),
+ ARDOUR_UI::config()->get_MidiPatchChangeFill(),
ArdourCanvas::Duple (x, y)
);
+ CANVAS_DEBUG_NAME (_flag, text);
+
_flag->Event.connect (sigc::mem_fun (*this, &PatchChange::event_handler));
+ _flag->set_font_description (ARDOUR_UI::config()->get_SmallFont());
_flag->set_text(text);
}
PatchChange::~PatchChange()
{
+ delete _flag;
}
void
bool
PatchChange::event_handler (GdkEvent* ev)
{
+ /* XXX: icky dcast */
+ Editor* e = dynamic_cast<Editor*> (&_region.get_time_axis_view().editor());
+
+ if (!e->internal_editing()) {
+ // not in internal edit mode, so no patch change editing
+ return false;
+ }
+
switch (ev->type) {
case GDK_BUTTON_PRESS:
- {
- /* XXX: icky dcast */
- Editor* e = dynamic_cast<Editor*> (&_region.get_time_axis_view().editor());
- if (e->current_mouse_mode() == Editing::MouseObject && e->internal_editing()) {
+ if (e->current_mouse_mode() == Editing::MouseObject) {
if (Gtkmm2ext::Keyboard::is_delete_event (&ev->button)) {
return true;
}
break;
- }
case GDK_KEY_PRESS:
switch (ev->key.keyval) {