else
m_widget = gtk_hscrollbar_new( (GtkAdjustment *) NULL );
- m_scrollBar[int(isVertical)] = (GtkRange*)m_widget;
+ m_scrollBar[0] = (GtkRange*)m_widget;
g_signal_connect_after(m_widget, "value_changed",
G_CALLBACK(gtk_value_changed), this);
{
if (GetThumbPosition() != viewStart)
{
- 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_block_by_func(m_widget,
(gpointer)gtk_value_changed, this);
- gtk_adjustment_value_changed(adj);
+ 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);
range =
thumbSize = 1;
}
- 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);
+ adj->value = position;
+ g_signal_handlers_block_by_func(m_widget, (void*)gtk_value_changed, this);
+ gtk_range_set_range((GtkRange*)m_widget, 0, range);
+ m_scrollPos[0] = adj->value;
+ g_signal_handlers_unblock_by_func(m_widget, (void*)gtk_value_changed, this);
}
void wxScrollBar::SetPageSize( int pageLength )
int range,
bool WXUNUSED(update))
{
- GtkRange * const sb = m_scrollBar[ScrollDirFromOrient(orient)];
+ const int dir = ScrollDirFromOrient(orient);
+ GtkRange* const sb = m_scrollBar[dir];
wxCHECK_RET( sb, _T("this window is not scrollable") );
if (range > 0)
thumbVisible = 1;
}
- if (pos > range - thumbVisible)
- pos = range - thumbVisible;
- if (pos < 0)
- pos = 0;
GtkAdjustment * const adj = sb->adjustment;
adj->step_increment = 1;
adj->page_increment =
adj->page_size = thumbVisible;
- adj->upper = range;
- SetScrollPos(orient, pos);
- gtk_adjustment_changed(adj);
+ adj->value = pos;
+
+ g_signal_handlers_block_by_func(
+ sb, (void*)gtk_scrollbar_value_changed, this);
+
+ gtk_range_set_range(sb, 0, range);
+ m_scrollPos[dir] = sb->adjustment->value;
+
+ g_signal_handlers_unblock_by_func(
+ sb, (void*)gtk_scrollbar_value_changed, this);
}
void wxWindowGTK::SetScrollPos(int orient, int pos, bool WXUNUSED(refresh))
// will not move smoothly while tracking when using wxScrollHelper.
if (GetScrollPos(orient) != pos)
{
- GtkAdjustment* adj = sb->adjustment;
- const int max = int(adj->upper - adj->page_size);
- if (pos > max)
- pos = max;
- if (pos < 0)
- pos = 0;
- m_scrollPos[dir] = adj->value = pos;
-
- g_signal_handlers_block_by_func(m_scrollBar[dir],
- (gpointer)gtk_scrollbar_value_changed, this);
+ g_signal_handlers_block_by_func(
+ sb, (void*)gtk_scrollbar_value_changed, this);
- gtk_adjustment_value_changed(adj);
+ gtk_range_set_value(sb, pos);
+ m_scrollPos[dir] = sb->adjustment->value;
- g_signal_handlers_unblock_by_func(m_scrollBar[dir],
- (gpointer)gtk_scrollbar_value_changed, this);
+ g_signal_handlers_unblock_by_func(
+ sb, (void*)gtk_scrollbar_value_changed, this);
}
}
// No scrolling requested.
if ((dx == 0) && (dy == 0)) return;
-
+
m_clipPaintRegion = true;
if (GetLayoutDirection() == wxLayout_RightToLeft)