- GtkAdjustment* adj = ((GtkRange*)m_widget)->adjustment;
- const int i = (GtkRange*)m_widget == m_scrollBar[1];
- const int max = int(adj->upper - adj->page_size);
- if (viewStart > max)
- viewStart = max;
- if (viewStart < 0)
- viewStart = 0;
-
- m_scrollPos[i] =
- adj->value = viewStart;
- // If a "value_changed" signal emission is not already in progress
- if (!m_blockValueChanged[i])
- {
- gtk_adjustment_value_changed(adj);
- }
+ g_signal_handlers_block_by_func(m_widget,
+ (gpointer)gtk_value_changed, this);
+
+ gtk_range_set_value((GtkRange*)m_widget, viewStart);
+ m_scrollPos[0] = gtk_range_get_value((GtkRange*)m_widget);
+
+ g_signal_handlers_unblock_by_func(m_widget,
+ (gpointer)gtk_value_changed, this);