From ce41c5d642c919cc913e009a0c8992a989f8f95c Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 20 Jul 2005 02:29:57 +0000 Subject: [PATCH] fixed stack comments of read1, minor UI updates --- library/io/c-streams.factor | 2 +- library/io/stdio.factor | 2 +- library/ui/panes.factor | 11 ++++++++++- library/ui/scrolling.factor | 9 ++++++--- library/unix/io.factor | 2 +- 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/library/io/c-streams.factor b/library/io/c-streams.factor index e93180899b..c38764ae83 100644 --- a/library/io/c-streams.factor +++ b/library/io/c-streams.factor @@ -18,7 +18,7 @@ M: c-stream stream-write1 ( char stream -- ) M: c-stream stream-write-attr ( str style stream -- ) nip c-stream-out fwrite ; -M: c-stream stream-read1 ( stream -- str ) +M: c-stream stream-read1 ( stream -- char/f ) c-stream-in dup [ fgetc ] when ; M: c-stream stream-flush ( stream -- ) diff --git a/library/io/stdio.factor b/library/io/stdio.factor index 0493175421..f8959b731c 100644 --- a/library/io/stdio.factor +++ b/library/io/stdio.factor @@ -5,7 +5,7 @@ USING: errors generic kernel lists namespaces strings styles ; : flush ( -- ) stdio get stream-flush ; : read-line ( -- string ) stdio get stream-readln ; -: read1 ( -- char ) stdio get stream-read1 ; +: read1 ( -- char/f ) stdio get stream-read1 ; : read ( count -- string ) stdio get stream-read ; : write ( string -- ) stdio get stream-write ; : write1 ( char -- ) stdio get stream-write1 ; diff --git a/library/ui/panes.factor b/library/ui/panes.factor index 1e5edbc35c..c9d30dcdc2 100644 --- a/library/ui/panes.factor +++ b/library/ui/panes.factor @@ -66,8 +66,17 @@ M: pane focusable-child* ( pane -- editor ) : pane-clear ( pane -- ) dup pane-output clear-incremental pane-current clear-gadget ; +: pane-ignore? ( style text pane -- ? ) + #! If we already have stuff in the current pack, and there + #! is no style information or text to write, ignore it. + #! Otherwise, we either have a fancy style (like an icon + #! or gadget being output), or we want the current pack to + #! have a minimal height so we put the empty label there. + pane-current gadget-children empty? not + rot not and swap empty? and ; + : pane-write-1 ( style text pane -- ) - pick empty? pick empty? and [ + 3dup pane-ignore? [ 3drop ] [ >r r> pane-current add-gadget diff --git a/library/ui/scrolling.factor b/library/ui/scrolling.factor index adc27c25b7..09f4ae73bb 100644 --- a/library/ui/scrolling.factor +++ b/library/ui/scrolling.factor @@ -27,7 +27,7 @@ M: viewport pref-dim gadget-child pref-dim ; : viewport-origin* ( viewport -- point ) dup viewport-bottom? [ f over set-viewport-bottom? - dup viewport-dim { 0 -1 0 } v* over fix-scroll + dup viewport-dim { 0 -1 0 } v* [ swap set-viewport-origin ] keep ] [ viewport-origin @@ -35,7 +35,8 @@ M: viewport pref-dim gadget-child pref-dim ; M: viewport layout* ( viewport -- ) dup gadget-child dup prefer - >r viewport-origin* r> set-rectangle-loc ; + >r dup viewport-origin* swap fix-scroll r> + set-rectangle-loc ; M: viewport focusable-child* ( viewport -- gadget ) gadget-child ; @@ -101,7 +102,9 @@ C: slider ( viewport vector -- slider ) : ( viewport -- slider ) { 0 1 0 } ; : thumb-loc ( slider -- loc ) - dup slider-viewport viewport-origin* vneg swap >thumb ; + dup slider-viewport + dup viewport-origin* swap fix-scroll + vneg swap >thumb ; : slider-dim { 16 16 16 } ; diff --git a/library/unix/io.factor b/library/unix/io.factor index ec86637e99..71fb3b78db 100644 --- a/library/unix/io.factor +++ b/library/unix/io.factor @@ -228,7 +228,7 @@ M: read-task task-container drop read-tasks get ; M: port stream-read ( count stream -- string ) [ wait-to-read ] keep read-fin ; -M: port stream-read1 ( stream -- string ) +M: port stream-read1 ( stream -- char/f ) 1 over wait-to-read port-sbuf first ; ! Writers