#include "canvas/debug.h"
#include "ardour_ui.h"
-#include "midi_region_view.h"
-#include "patch_change.h"
#include "editor.h"
#include "editor_drag.h"
+#include "midi_region_view.h"
+#include "patch_change.h"
using namespace MIDI::Name;
using namespace std;
+using Gtkmm2ext::Keyboard;
/** @param x x position in pixels.
*/
-PatchChange::PatchChange(
- MidiRegionView& region,
- ArdourCanvas::Container* parent,
- const string& text,
- double height,
- double x,
- double y,
- ARDOUR::InstrumentInfo& info,
- ARDOUR::MidiModel::PatchChangePtr patch)
+PatchChange::PatchChange(MidiRegionView& region,
+ ArdourCanvas::Container* parent,
+ const string& text,
+ double height,
+ double x,
+ double y,
+ ARDOUR::InstrumentInfo& info,
+ ARDOUR::MidiModel::PatchChangePtr patch)
: _region (region)
, _info (info)
, _patch (patch)
parent,
height,
ARDOUR_UI::config()->color ("midi patch change outline"),
- ARDOUR_UI::config()->color ("midi patch change fill"),
- ArdourCanvas::Duple (x, y)
- );
+ ARDOUR_UI::config()->color_mod ("midi patch change fill", "midi patch change fill"),
+ ArdourCanvas::Duple (x, y),
+ true);
CANVAS_DEBUG_NAME (_flag, text);
{
/* 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:
- if (e->current_mouse_mode() == Editing::MouseObject) {
+ if (e->current_mouse_mode() == Editing::MouseContent) {
if (Gtkmm2ext::Keyboard::is_delete_event (&ev->button)) {
case GDK_Up:
case GDK_KP_Up:
case GDK_uparrow:
- _region.previous_patch (*this);
- break;
+ _region.step_patch(
+ *this, Keyboard::modifier_state_contains(ev->key.state, Keyboard::TertiaryModifier), 1);
+ return true;
case GDK_Down:
case GDK_KP_Down:
case GDK_downarrow:
- _region.next_patch (*this);
- break;
+ _region.step_patch(
+ *this, Keyboard::modifier_state_contains(ev->key.state, Keyboard::TertiaryModifier), -1);
+ return true;
default:
break;
}
case GDK_SCROLL:
if (ev->scroll.direction == GDK_SCROLL_UP) {
- _region.previous_patch (*this);
+ _region.step_patch(
+ *this, Keyboard::modifier_state_contains(ev->scroll.state, Keyboard::TertiaryModifier), 1);
return true;
} else if (ev->scroll.direction == GDK_SCROLL_DOWN) {
- _region.next_patch (*this);
+ _region.step_patch(
+ *this, Keyboard::modifier_state_contains(ev->scroll.state, Keyboard::TertiaryModifier), -1);
return true;
}
break;