+ break;
+ default:
+ return false;
+ }
+
+ if (Config->get_shuttle_units() == Semitones) {
+
+ float lower_side_of_dead_zone = semitones_as_fract (-24, true);
+ float upper_side_of_dead_zone = semitones_as_fract (-24, false);
+
+ /* if we entered the "dead zone" (-24 semitones in forward or reverse), jump
+ to the far side of it.
+ */
+
+ if (shuttle_fract > lower_side_of_dead_zone && shuttle_fract < upper_side_of_dead_zone) {
+ switch (ev->direction) {
+ case GDK_SCROLL_UP:
+ case GDK_SCROLL_RIGHT:
+ shuttle_fract = upper_side_of_dead_zone;
+ break;
+ case GDK_SCROLL_DOWN:
+ case GDK_SCROLL_LEFT:
+ shuttle_fract = lower_side_of_dead_zone;
+ break;
+ default:
+ /* impossible, checked above */
+ return false;
+ }
+ }
+ }