diff options
author | David Robillard <d@drobilla.net> | 2014-12-17 20:18:11 -0500 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2014-12-17 20:18:11 -0500 |
commit | 5f6630034919bde73ffa603e7420c8af2c3c16f7 (patch) | |
tree | cd5b4d36e528d426087b20db465f24d5588ab5bd /gtk2_ardour/patch_change.cc | |
parent | d2cafbe95a5784b7c306c24b0008379a41a909f7 (diff) |
Support stepping bank by shift+scroll/arrow.
Diffstat (limited to 'gtk2_ardour/patch_change.cc')
-rw-r--r-- | gtk2_ardour/patch_change.cc | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/gtk2_ardour/patch_change.cc b/gtk2_ardour/patch_change.cc index 844a129b1d..925a0f3b23 100644 --- a/gtk2_ardour/patch_change.cc +++ b/gtk2_ardour/patch_change.cc @@ -31,25 +31,25 @@ #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) @@ -60,8 +60,7 @@ PatchChange::PatchChange( height, ARDOUR_UI::config()->color ("midi patch change outline"), ARDOUR_UI::config()->color_mod ("midi patch change fill", "midi patch change fill"), - ArdourCanvas::Duple (x, y) - ); + ArdourCanvas::Duple (x, y)); CANVAS_DEBUG_NAME (_flag, text); @@ -199,13 +198,15 @@ PatchChange::event_handler (GdkEvent* ev) case GDK_Up: case GDK_KP_Up: case GDK_uparrow: - _region.step_patch (*this, 0, -1); - 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.step_patch (*this, 0, 1); - break; + _region.step_patch( + *this, Keyboard::modifier_state_contains(ev->key.state, Keyboard::TertiaryModifier), -1); + return true; default: break; } @@ -213,10 +214,12 @@ PatchChange::event_handler (GdkEvent* ev) case GDK_SCROLL: if (ev->scroll.direction == GDK_SCROLL_UP) { - _region.step_patch (*this, 0, -1); + _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.step_patch (*this, 0, 1); + _region.step_patch( + *this, Keyboard::modifier_state_contains(ev->scroll.state, Keyboard::TertiaryModifier), -1); return true; } break; |