const unsigned int AutoSpin::timer_interval = 20; /* msecs */
const unsigned int AutoSpin::climb_timer_calls = 5; /* between climbing */
-AutoSpin::AutoSpin (Gtk::Adjustment &adjr, gfloat cr)
+AutoSpin::AutoSpin (Gtk::Adjustment &adjr, gfloat cr, bool round_to_steps_yn)
: adjustment (adjr),
climb_rate (cr)
have_timer = false;
need_timer = false;
timer_calls = 0;
+ round_to_steps = round_to_steps_yn;
}
void
AutoSpin::stop_timer ()
{
if (have_timer) {
- gtk_timeout_remove (timeout_tag);
+ g_source_remove (timeout_tag);
have_timer = false;
}
}
have_timer = true;
timer_calls = 0;
- timeout_tag = gtk_timeout_add (initial_timer_interval,
+ timeout_tag = g_timeout_add (initial_timer_interval,
AutoSpin::_timer,
this);
}
void
AutoSpin::set_value (gfloat value)
{
- adjustment.set_value (value);
+ if (round_to_steps)
+ adjustment.set_value (floor((value / step_increment) + 0.5f) * step_increment);
+ else
+ adjustment.set_value (value);
}
bool
}
}
- adjustment.set_value (val);
+ set_value(val);
return done;
}
request a much more frequent update.
*/
- timeout_tag = gtk_timeout_add (timer_interval,
+ timeout_tag = g_timeout_add (timer_interval,
_timer,
this);
have_timer = true;
{
adjustment.set_upper(up);
adjustment.set_lower(down);
+
+ initial = init;
adjustment.changed ();