--- oldrange.c	Thu Dec 27 16:27:48 2001
+++ gtkrange.c	Thu Dec 27 16:55:51 2001
@@ -1023,10 +1023,10 @@
           return GTK_SCROLL_STEP_BACKWARD;
           break;
         case 2:
-          return GTK_SCROLL_PAGE_BACKWARD;
+          return GTK_SCROLL_START;
           break;
         case 3:
-          return GTK_SCROLL_START;
+          return GTK_SCROLL_STEP_FORWARD;
           break;
         }
       break;
@@ -1040,10 +1040,10 @@
           return GTK_SCROLL_STEP_FORWARD;
           break;
         case 2:
-          return GTK_SCROLL_PAGE_FORWARD;
+          return GTK_SCROLL_END;
           break;
         case 3:
-          return GTK_SCROLL_END;
+          return GTK_SCROLL_STEP_BACKWARD;
           break;
         }
       break;
@@ -1054,12 +1054,12 @@
         if (range->trough_click_forward)
           {
             return range->layout->grab_button == 3
-              ? GTK_SCROLL_STEP_FORWARD : GTK_SCROLL_PAGE_FORWARD;
+              ? GTK_SCROLL_PAGE_BACKWARD : GTK_SCROLL_PAGE_FORWARD;
           }
         else
           {
             return range->layout->grab_button == 3
-              ? GTK_SCROLL_STEP_BACKWARD : GTK_SCROLL_PAGE_BACKWARD;
+              ? GTK_SCROLL_PAGE_FORWARD : GTK_SCROLL_PAGE_BACKWARD;
           }
       }
       break;
@@ -1271,25 +1271,13 @@
   
   if (range->layout->grab_button == event->button)
     {
-      GtkScrollType scroll;
       MouseLocation grab_location;
 
       grab_location = range->layout->grab_location;
 
-      scroll = range_get_scroll_for_grab (range);
-      
       range_grab_remove (range);
       gtk_range_remove_step_timer (range);
       
-      /* We only do the move if we're still on top of the button at
-       * release
-       */
-      if (grab_location == range->layout->mouse_location &&
-          scroll != GTK_SCROLL_NONE)
-        {
-          gtk_range_scroll (range, scroll);
-        }
-
       if (grab_location == MOUSE_SLIDER)
         update_slider_position (range, event->x, event->y);
 
@@ -2309,6 +2297,8 @@
                    initial_timeout,
                    range);
   range->timer->step = step;
+
+  gtk_range_scroll (range, range->timer->step);
 }
 
 static void
