using namespace Gtk;
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)
: adjustment (adj),
PixFader::on_button_press_event (GdkEventButton* ev)
{
if (ev->type != GDK_BUTTON_PRESS) {
- return false;
+ return true;
}
if (ev->button != 1 && ev->button != 2) {
if (ev->state & Keyboard::TertiaryModifier) {
adjustment.set_value (default_value);
- } else if (ev->state & fine_scale_modifier) {
+ } else if (ev->state & Keyboard::GainFineScaleModifier) {
adjustment.set_value (adjustment.get_lower());
} 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 */
double scale;
bool ret = false;
- if (ev->state & fine_scale_modifier) {
- if (ev->state & extra_fine_scale_modifier) {
+ if (ev->state & Keyboard::GainFineScaleModifier) {
+ if (ev->state & Keyboard::GainExtraFineScaleModifier) {
scale = 0.01;
} else {
scale = 0.05;
return true;
}
- if (ev->state & fine_scale_modifier) {
- if (ev->state & extra_fine_scale_modifier) {
+ if (ev->state & Keyboard::GainFineScaleModifier) {
+ if (ev->state & Keyboard::GainExtraFineScaleModifier) {
scale = 0.05;
} else {
scale = 0.1;
{
if (_orien == VERT) {
view.height = span = l;
- unity_loc = (int) rint (view.height - (default_value * view.height)) - 1;
} else {
view.width = span = l;
+ }
+
+ update_unity_position ();
+
+ queue_draw ();
+}
+
+void
+PixFader::update_unity_position ()
+{
+ if (_orien == VERT) {
+ unity_loc = (int) rint (view.height * (1 - (default_value / (adjustment.get_upper() - adjustment.get_lower())))) - 1;
+ } else {
unity_loc = (int) rint (default_value * view.width);
}
adjustment.set_value (fract * (adjustment.get_upper () - adjustment.get_lower ()));
}
+
+void
+PixFader::set_default_value (float d)
+{
+ default_value = d;
+ update_unity_position ();
+}