- if (position > range - thumbSize)
- position = range - thumbSize;
- if (position < 0)
- position = 0;
- GtkAdjustment* adj = ((GtkRange*)m_widget)->adjustment;
- adj->step_increment = 1;
- adj->page_increment = pageSize;
- adj->page_size = thumbSize;
- adj->upper = range;
- SetThumbPosition(position);
- gtk_adjustment_changed(adj);
+ g_signal_handlers_block_by_func(m_widget, (void*)gtk_value_changed, this);
+ GtkRange* widget = GTK_RANGE(m_widget);
+ gtk_adjustment_set_page_size(gtk_range_get_adjustment(widget), thumbSize);
+ gtk_range_set_increments(widget, 1, pageSize);
+ gtk_range_set_range(widget, 0, range);
+ gtk_range_set_value(widget, position);
+ m_scrollPos[0] = gtk_range_get_value(widget);
+ g_signal_handlers_unblock_by_func(m_widget, (void*)gtk_value_changed, this);