summaryrefslogtreecommitdiff
path: root/gtk2_ardour/patch_change.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2014-12-17 20:18:11 -0500
committerDavid Robillard <d@drobilla.net>2014-12-17 20:18:11 -0500
commit5f6630034919bde73ffa603e7420c8af2c3c16f7 (patch)
treecd5b4d36e528d426087b20db465f24d5588ab5bd /gtk2_ardour/patch_change.cc
parentd2cafbe95a5784b7c306c24b0008379a41a909f7 (diff)
Support stepping bank by shift+scroll/arrow.
Diffstat (limited to 'gtk2_ardour/patch_change.cc')
-rw-r--r--gtk2_ardour/patch_change.cc41
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;