The Range widget class is fairly complicated internally, but, like all the "base class" widgets, most of its complexity is only interesting if you want to hack on it. Also, almost all of the functions and signals it defines are only really used in writing derived widgets. There are, however, a few useful functions that are defined in &li;gtk/gtkrange.h> and will work on all range widgets.
Gtk.Update.ContinuousThis is the default. The "ValueChanged" event is emitted continuously, i.e., whenever the slider is moved by even the tiniest amount.
Gtk.Update.DiscontinuousThe "ValueChanged" event is only emitted once the slider has stopped moving and the user has released the mouse button.
Gtk.Update.DelayedThe "ValueChanged" event is emitted when the user releases the mouse button, or if the slider stops moving for a short period of time. The update policy of a range widget can be set by casting it using the GTK_RANGE(widget) macro and passing it to this function:
range1.UpdatePolicy = UpdateType policy;
range1.Adjustment = Adjustment adjustment;range1.Adjustment returns a pointer to the adjustment to which range is connected.
range1.Adjustment does absolutely nothing if you assign to it the adjustment that range is already using, regardless of whether you changed any of its fields or not. If you pass it a new Adjustment, it will unreference the old one if it exists (possibly destroying it), connect the appropriate signals to the new one, and call the private function range1.AdjustmentChanged(), which will (or at least, is supposed to...) recalculate the size and/or position of the slider and redraw if necessary. As mentioned in the section on adjustments, if you wish to reuse the same Adjustment, when you modify its values directly, you should emit the "changed" signal on it, like this:
g_signal_emit_by_name (G_OBJECT (adjustment), "changed");