]> gitweb.factorcode.org Git - factor.git/commitdiff
curses: seperated echo and raw/cbreak options from window-setup
authorPhilipp Brüschweiler <blei42@gmail.com>
Wed, 21 Oct 2009 18:40:32 +0000 (20:40 +0200)
committerPhilipp Brüschweiler <blei42@gmail.com>
Sun, 3 Oct 2010 11:16:30 +0000 (13:16 +0200)
extra/curses/curses.factor

index 364d4fae32a3a5385ade719098ff5710333864c0..895fa52eb7f8a759edbaaa3a65fd51104156f7cb 100644 (file)
@@ -188,15 +188,18 @@ M: curses-window dispose* ( window -- )
         [ ffi:cbreak ] [ ffi:nocbreak ] if
     ] if curses-error ;
 
-: apply-options ( window -- )
+: apply-window-options ( window -- )
     {
-        [ [ cbreak>> ] [ raw>> ] bi set-cbreak/raw ]
-        [ echo>> [ ffi:echo ] [ ffi:noecho ] if curses-error ]
         [ [ ptr>> ] [ scrollok>> >BOOLEAN ] bi ffi:scrollok curses-error ]
         [ [ ptr>> ] [ leaveok>> >BOOLEAN ] bi ffi:leaveok curses-error ]
         [ [ ptr>> ] [ keypad>> >BOOLEAN ] bi ffi:keypad curses-error ]
     } cleave ;
 
+: apply-global-options ( window -- )
+    [ [ cbreak>> ] [ raw>> ] bi set-cbreak/raw ]
+    [ echo>> [ ffi:echo ] [ ffi:noecho ] if curses-error ]
+    bi ;
+
 SYMBOL: n-registered-colors
 
 MEMO: register-color ( fg bg -- n )
@@ -220,7 +223,7 @@ PRIVATE>
         ] [
             window-params ffi:newwin
         ] if* [ curses-error ] keep >>ptr &dispose
-    ] [ apply-options ] bi ;
+    ] [ apply-window-options ] bi ;
 
 : with-window ( window quot -- )
     [ current-window ] dip with-variable ; inline
@@ -230,9 +233,12 @@ PRIVATE>
     [
         '[
             ffi:initscr curses-pointer-error
-            >>ptr dup apply-options
+            >>ptr
+            [ apply-global-options ] [ apply-window-options ] [ ] tri
+
             ffi:erase curses-error
             init-colors
+
             _ with-window
         ] [ ffi:endwin curses-error ] [ ] cleanup
     ] with-destructors ; inline
@@ -259,7 +265,7 @@ M: curses-terminal dispose
         init-terminal
         ffi:initscr curses-pointer-error drop
         dup ptr>> ffi:set_term curses-pointer-error drop
-    ] dip apply-options ;
+    ] dip [ apply-global-options ] [ apply-window-options ] bi ;
     
 <PRIVATE