]> gitweb.factorcode.org Git - factor.git/commitdiff
make sliders work when range min isn't zero
authorJoe Groff <arcata@gmail.com>
Fri, 19 Jun 2009 02:20:34 +0000 (21:20 -0500)
committerJoe Groff <arcata@gmail.com>
Fri, 19 Jun 2009 02:20:34 +0000 (21:20 -0500)
basis/ui/gadgets/sliders/sliders.factor

index d293fd7f8b4833802ef7b3d10ef64bf810e0e7cd..b98a0d152e9c00566f0ad285ce7e3f06d7f346e0 100644 (file)
@@ -9,11 +9,15 @@ IN: ui.gadgets.sliders
 
 TUPLE: slider < track elevator thumb saved line ;
 
-: slider-value ( gadget -- n ) model>> range-value >fixnum ;
+: slider-value ( gadget -- n ) model>> range-value ;
 : slider-page ( gadget -- n ) model>> range-page-value ;
+: slider-min ( gadget -- n ) model>> range-min-value ;
 : slider-max ( gadget -- n ) model>> range-max-value ;
 : slider-max* ( gadget -- n ) model>> range-max-value* ;
 
+: slider-length ( gadget -- n ) [ slider-max ] [ slider-min ] bi - ;
+: slider-length* ( gadget -- n ) [ slider-max* ] [ slider-min ] bi - ;
+
 : slide-by ( amount slider -- ) model>> move-by ;
 : slide-by-page ( amount slider -- ) model>> move-by-page ;
 
@@ -34,7 +38,9 @@ CONSTANT: elevator-padding 4
 CONSTANT: min-thumb-dim 30
 
 : visible-portion ( slider -- n )
-    [ slider-page ] [ slider-max 1 max ] bi / 1 min ;
+    [ slider-page ]
+    [ slider-length 1 max ]
+    bi / 1 min ;
 
 : thumb-dim ( slider -- h )
     [
@@ -48,7 +54,7 @@ CONSTANT: min-thumb-dim 30
     #! x*n is the screen position of the thumb, and conversely
     #! for x/n. The '1 max' calls avoid division by zero.
     [ [ elevator-length ] [ thumb-dim ] bi - 1 max ]
-    [ slider-max* 1 max ]
+    [ slider-length* 1 max ]
     bi / ;
 
 : slider>screen ( m slider -- n ) slider-scale * ;
@@ -131,7 +137,9 @@ elevator H{
         swap >>orientation ;
 
 : thumb-loc ( slider -- loc )
-    [ slider-value ] keep slider>screen elevator-padding + ;
+    [ slider-value ]
+    [ slider-min - ]
+    [ slider>screen elevator-padding + ] tri ;
 
 : layout-thumb-loc ( thumb slider -- )
     [ thumb-loc ] [ orientation>> ] bi n*v
@@ -235,4 +243,5 @@ PRIVATE>
             [ <up-button> f track-add ]
             [ <down-button> f track-add ]
             [ drop <gadget> { 1 1 } >>dim f track-add ]
-        } cleave ;
\ No newline at end of file
+        } cleave ;
+