- 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;
-
- g_signal_handlers_disconnect_by_func( m_widget,
- (gpointer)gtk_value_changed, this);
-
- gtk_adjustment_value_changed(adj);
-
- g_signal_connect_after(m_widget, "value_changed",
- G_CALLBACK(gtk_value_changed), this);
+ 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);