diff --git a/ChangeLog b/ChangeLog index b45b41a470..4d9f28046f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri Dec 12 00:12:01 2003 Matthias Clasen + + * gtk/gtkrange.c (gtk_range_scroll): Fix direction of + steppers in inverted scrollbars. (#129084, Olexiy Avramchenko) + 2003-12-09 Noah Levitt * gdk/gdkkeysyms.h: diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index b45b41a470..4d9f28046f 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +Fri Dec 12 00:12:01 2003 Matthias Clasen + + * gtk/gtkrange.c (gtk_range_scroll): Fix direction of + steppers in inverted scrollbars. (#129084, Olexiy Avramchenko) + 2003-12-09 Noah Levitt * gdk/gdkkeysyms.h: diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index b45b41a470..4d9f28046f 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,8 @@ +Fri Dec 12 00:12:01 2003 Matthias Clasen + + * gtk/gtkrange.c (gtk_range_scroll): Fix direction of + steppers in inverted scrollbars. (#129084, Olexiy Avramchenko) + 2003-12-09 Noah Levitt * gdk/gdkkeysyms.h: diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index b45b41a470..4d9f28046f 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,8 @@ +Fri Dec 12 00:12:01 2003 Matthias Clasen + + * gtk/gtkrange.c (gtk_range_scroll): Fix direction of + steppers in inverted scrollbars. (#129084, Olexiy Avramchenko) + 2003-12-09 Noah Levitt * gdk/gdkkeysyms.h: diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index b45b41a470..4d9f28046f 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +Fri Dec 12 00:12:01 2003 Matthias Clasen + + * gtk/gtkrange.c (gtk_range_scroll): Fix direction of + steppers in inverted scrollbars. (#129084, Olexiy Avramchenko) + 2003-12-09 Noah Levitt * gdk/gdkkeysyms.h: diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c index 6dd3c1a4df..7754600d24 100644 --- a/gtk/gtkrange.c +++ b/gtk/gtkrange.c @@ -1550,7 +1550,21 @@ page_forward (GtkRange *range) gdouble newval; newval = range->adjustment->value + range->adjustment->page_increment; + gtk_range_internal_set_value (range, newval); +} +static void +scroll_begin (GtkRange *range) +{ + gtk_range_internal_set_value (range, range->adjustment->lower); +} + +static void +scroll_end (GtkRange *range) +{ + gdouble newval; + + newval = range->adjustment->upper - range->adjustment->page_size; gtk_range_internal_set_value (range, newval); } @@ -1589,11 +1603,17 @@ gtk_range_scroll (GtkRange *range, break; case GTK_SCROLL_STEP_BACKWARD: - step_back (range); + if (should_invert (range)) + step_forward (range); + else + step_back (range); break; case GTK_SCROLL_STEP_FORWARD: - step_forward (range); + if (should_invert (range)) + step_back (range); + else + step_forward (range); break; case GTK_SCROLL_PAGE_LEFT: @@ -1633,13 +1653,17 @@ gtk_range_scroll (GtkRange *range, break; case GTK_SCROLL_START: - gtk_range_internal_set_value (range, - range->adjustment->lower); + if (should_invert (range)) + scroll_end (range); + else + scroll_begin (range); break; case GTK_SCROLL_END: - gtk_range_internal_set_value (range, - range->adjustment->upper - range->adjustment->page_size); + if (should_invert (range)) + scroll_begin (range); + else + scroll_end (range); break; case GTK_SCROLL_JUMP: