Use the same logic to decide on step size when scroll-wheeling faders in the mixer and knobs in the monitor section (part of #4726).

git-svn-id: svn://localhost/ardour2/branches/3.0@12510 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington 2012-05-31 18:04:47 +00:00
parent 556732df80
commit 6a4628e50a
5 changed files with 19 additions and 18 deletions

View file

@ -56,6 +56,8 @@ class Keyboard : public sigc::trackable, PBD::Stateful
static uint32_t Level4Modifier; static uint32_t Level4Modifier;
static uint32_t CopyModifier; static uint32_t CopyModifier;
static uint32_t RangeSelectModifier; static uint32_t RangeSelectModifier;
static uint32_t GainFineScaleModifier;
static uint32_t GainExtraFineScaleModifier;
static const char* primary_modifier_name (); static const char* primary_modifier_name ();
static const char* secondary_modifier_name (); static const char* secondary_modifier_name ();

View file

@ -85,9 +85,6 @@ class PixFader : public Gtk::DrawingArea
int display_span (); int display_span ();
void set_adjustment_from_event (GdkEventButton *); void set_adjustment_from_event (GdkEventButton *);
void update_unity_position (); void update_unity_position ();
static int fine_scale_modifier;
static int extra_fine_scale_modifier;
}; };

View file

@ -91,6 +91,9 @@ const char* Keyboard::rangeselect_modifier_name() { return S_("Key|Shift"); }
#endif #endif
guint Keyboard::GainFineScaleModifier = Keyboard::PrimaryModifier;
guint Keyboard::GainExtraFineScaleModifier = Keyboard::SecondaryModifier;
Keyboard* Keyboard::_the_keyboard = 0; Keyboard* Keyboard::_the_keyboard = 0;
Gtk::Window* Keyboard::current_window = 0; Gtk::Window* Keyboard::current_window = 0;
bool Keyboard::_some_magic_widget_has_focus = false; bool Keyboard::_some_magic_widget_has_focus = false;

View file

@ -381,23 +381,25 @@ MotionFeedback::pixwin_scroll_event (GdkEventScroll* ev)
return false; return false;
} }
if ((ev->state & (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier)) == (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier)) { if (ev->state & Keyboard::GainFineScaleModifier) {
scale = 0.01; if (ev->state & Keyboard::GainExtraFineScaleModifier) {
} else if (ev->state & Keyboard::PrimaryModifier) { scale = 0.01;
scale = 0.1; } else {
scale = 0.05;
}
} else { } else {
scale = 1.0; scale = 0.25;
} }
switch (ev->direction) { switch (ev->direction) {
case GDK_SCROLL_UP: case GDK_SCROLL_UP:
case GDK_SCROLL_RIGHT: case GDK_SCROLL_RIGHT:
_controllable->set_value (adjust (scale * step_inc)); _controllable->set_value (adjust (scale * page_inc));
break; break;
case GDK_SCROLL_DOWN: case GDK_SCROLL_DOWN:
case GDK_SCROLL_LEFT: case GDK_SCROLL_LEFT:
_controllable->set_value (adjust (-scale * step_inc)); _controllable->set_value (adjust (-scale * page_inc));
break; break;
} }

View file

@ -28,9 +28,6 @@ using namespace Gtkmm2ext;
using namespace Gtk; using namespace Gtk;
using namespace std; using namespace std;
int PixFader::fine_scale_modifier = Keyboard::PrimaryModifier;
int PixFader::extra_fine_scale_modifier = Keyboard::SecondaryModifier;
PixFader::PixFader (Glib::RefPtr<Gdk::Pixbuf> belt, Gtk::Adjustment& adj, int orientation, int fader_length) PixFader::PixFader (Glib::RefPtr<Gdk::Pixbuf> belt, Gtk::Adjustment& adj, int orientation, int fader_length)
: adjustment (adj), : adjustment (adj),
@ -221,7 +218,7 @@ PixFader::on_button_release_event (GdkEventButton* ev)
if (ev->state & Keyboard::TertiaryModifier) { if (ev->state & Keyboard::TertiaryModifier) {
adjustment.set_value (default_value); adjustment.set_value (default_value);
} else if (ev->state & fine_scale_modifier) { } else if (ev->state & Keyboard::GainFineScaleModifier) {
adjustment.set_value (adjustment.get_lower()); adjustment.set_value (adjustment.get_lower());
} else if ((_orien == VERT && ev_pos < span - display_span()) || (_orien == HORIZ && ev_pos > span - display_span())) { } else if ((_orien == VERT && ev_pos < span - display_span()) || (_orien == HORIZ && ev_pos > span - display_span())) {
/* above the current display height, remember X Window coords */ /* above the current display height, remember X Window coords */
@ -255,8 +252,8 @@ PixFader::on_scroll_event (GdkEventScroll* ev)
double scale; double scale;
bool ret = false; bool ret = false;
if (ev->state & fine_scale_modifier) { if (ev->state & Keyboard::GainFineScaleModifier) {
if (ev->state & extra_fine_scale_modifier) { if (ev->state & Keyboard::GainExtraFineScaleModifier) {
scale = 0.01; scale = 0.01;
} else { } else {
scale = 0.05; scale = 0.05;
@ -320,8 +317,8 @@ PixFader::on_motion_notify_event (GdkEventMotion* ev)
return true; return true;
} }
if (ev->state & fine_scale_modifier) { if (ev->state & Keyboard::GainFineScaleModifier) {
if (ev->state & extra_fine_scale_modifier) { if (ev->state & Keyboard::GainExtraFineScaleModifier) {
scale = 0.05; scale = 0.05;
} else { } else {
scale = 0.1; scale = 0.1;