From 071fca99169527055f8687114625048a203089bc Mon Sep 17 00:00:00 2001 From: slava Date: Fri, 10 Nov 2006 20:45:06 +0000 Subject: [PATCH] Scroll to the top when pane control changes --- library/ui/gadgets.factor | 4 +++- library/ui/gadgets/panes.factor | 1 + library/ui/gadgets/scrolling.factor | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/library/ui/gadgets.factor b/library/ui/gadgets.factor index 25608fe2b0..0b8111f373 100644 --- a/library/ui/gadgets.factor +++ b/library/ui/gadgets.factor @@ -56,8 +56,10 @@ M: gadget equal? eq? ; : nth-gadget gadget-children nth ; +: { 0 0 } dup ; + C: gadget ( -- gadget ) - { 0 0 } dup over set-delegate + over set-delegate { 0 1 } over set-gadget-orientation t over set-gadget-visible? ; diff --git a/library/ui/gadgets/panes.factor b/library/ui/gadgets/panes.factor index 31f3f1b321..8a7f17eb3f 100644 --- a/library/ui/gadgets/panes.factor +++ b/library/ui/gadgets/panes.factor @@ -97,6 +97,7 @@ M: duplex-stream write-gadget : with-pane ( pane quot -- ) #! Clear the pane and run the quotation in a scope with #! stdio set to the pane. + over scroll>top over pane-clear >r r> over >r with-stream r> ?terpri ; inline diff --git a/library/ui/gadgets/scrolling.factor b/library/ui/gadgets/scrolling.factor index a6f7a6c8d7..4264007ebf 100644 --- a/library/ui/gadgets/scrolling.factor +++ b/library/ui/gadgets/scrolling.factor @@ -87,6 +87,9 @@ C: scroller ( gadget -- scroller ) : (scroll>bottom) ( scroller -- ) dup scroller-viewport viewport-dim { 0 1 } v* scroll ; +: scroll>top ( gadget -- ) + swap scroll>rect ; + : update-scroller ( scroller -- ) dup scroller-follows [ dup scroller-follows t eq? [