]> gitweb.factorcode.org Git - factor.git/commitdiff
viewport/scrolling refactoring
authorslava <slava@factorcode.org>
Fri, 29 Sep 2006 22:56:09 +0000 (22:56 +0000)
committerslava <slava@factorcode.org>
Fri, 29 Sep 2006 22:56:09 +0000 (22:56 +0000)
TODO.FACTOR.txt
library/ui/gadgets/scrolling.factor
library/ui/gadgets/sliders.factor
library/ui/gadgets/viewports.factor

index 4fe1ba1359e7d7e0e4f5b854b129755a73550eb2..1ab482deebb1d08bd82c42467810668b239b1b33 100644 (file)
@@ -6,7 +6,6 @@
 [ 1 2 3 4 5 6 7 8 9 10 10 10 10 10 10 10 10 10 10 11 11 11 113 
 ]
 - prettier printing of hashtable literals, alists, cond, ...
-- the editor should fill up the interior of the scroller completely
 - ui quick start doc
 - x11: scroll up/down wiggles caret
 - slider needs to be modelized
@@ -15,6 +14,7 @@
 
 + ui:
 
+- [ ] write in the UI breaks stuff
 - some way of intercepting all gestures
 - pane output in UI should use less memory
 - variable width word wrap
@@ -64,6 +64,8 @@
 
 + module system:
 
+- reloading source files manually should update their mod time in the
+  module system
 - convention for main entry point of a module
 - convention for main help article of a module
 - track a list of assets loaded from each module's file
index 156d2937a7acfc6f9ef71979e6f217cf2a859125..c2e76140804b0289b9563f08cb80097ec41c6ee2 100644 (file)
@@ -52,7 +52,7 @@ C: scroller ( gadget -- scroller )
     r> set-slider ;
 
 : position-viewport ( scroller -- )
-    dup scroller-origin vneg
+    dup scroller-origin vneg viewport-gap v+
     swap scroller-viewport gadget-child
     set-rect-loc ;
 
@@ -62,7 +62,10 @@ C: scroller ( gadget -- scroller )
     position-viewport ;
 
 : (scroll>rect) ( rect scroller -- )
-    [ scroller-origin vneg offset-rect viewport-rect ] keep
+    [
+        scroller-origin vneg offset-rect
+        viewport-gap offset-rect
+    ] keep
     [
         scroller-viewport 2rect-extent
         >r >r v- { 0 0 } vmin r> r> v- { 0 0 } vmax v+
@@ -75,8 +78,7 @@ C: scroller ( gadget -- scroller )
         2drop
     ] if ;
 
-: scroll>bottom ( gadget -- )
-    t swap scroll>rect ;
+: scroll>bottom ( gadget -- ) t swap scroll>rect ;
 
 : (scroll>bottom) ( scroller -- )
     dup scroller-viewport viewport-dim { 0 1 } v* scroll ;
index 3931185f26bb4e19ab1fd4ab67797ba34e29b017..fc011c4e98c3cea98d1fcb614c90fc02b1d9cfb0 100644 (file)
@@ -87,10 +87,10 @@ C: thumb ( vector -- thumb )
     dup hand-click-rel >r find-slider r>
     over gadget-orientation v.
     over screen>slider over slider-value - sgn
-    swap slide-by-page ;
+    [ swap slide-by-page ] curry start-timer-gadget ;
 
 elevator H{
-    { T{ button-down } [ [ elevator-click ] start-timer-gadget ] }
+    { T{ button-down } [ elevator-click ] }
     { T{ button-up } [ stop-timer-gadget ] }
 } set-gestures
 
index 3eddc99ec20961cc69de6f9b8fccf371ce5c75e6..c9343ab0056af5a59898fcc798d3adeb3864e534 100644 (file)
@@ -4,22 +4,25 @@ IN: gadgets-viewports
 USING: arrays gadgets gadgets-borders generic kernel math
 namespaces sequences ;
 
+: viewport-gap { 3 3 } ;
+
 TUPLE: viewport ;
 
 : find-viewport [ viewport? ] find-parent ;
 
-: viewport-dim ( viewport -- dim ) gadget-child pref-dim ;
+: viewport-dim ( viewport -- dim )
+    gadget-child pref-dim viewport-gap 2 v*n v+ ;
 
 C: viewport ( content -- viewport )
     dup delegate>gadget
-    [ >r 3 <border> r> add-gadget ] keep
+    [ add-gadget ] keep
     t over set-gadget-clipped? ;
 
-M: viewport layout* gadget-child prefer ;
+M: viewport layout*
+    dup rect-dim over gadget-child pref-dim vmax
+    swap gadget-child set-layout-dim ;
 
 M: viewport focusable-child*
     gadget-child ;
 
 M: viewport pref-dim* viewport-dim ;
-
-: viewport-rect ( rect -- rect ) { 3 3 } offset-rect ;