]> gitweb.factorcode.org Git - factor.git/commitdiff
UI fixes
authorSlava Pestov <slava@factorcode.org>
Mon, 29 Aug 2005 22:18:10 +0000 (22:18 +0000)
committerSlava Pestov <slava@factorcode.org>
Mon, 29 Aug 2005 22:18:10 +0000 (22:18 +0000)
library/compiler/compiler.factor
library/compiler/intrinsics.factor
library/tools/debugger.factor
library/tools/gensym.factor
library/ui/panes.factor
library/ui/scrolling.factor
library/ui/sliders.factor

index c0e2640944830bbfc74be33da7945e8b0623b1a9..cc9b8828182f2929f66a1e807626d35dbb830952 100644 (file)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2004, 2005 Slava Pestov.
 IN: compiler
-USING: compiler-backend compiler-frontend errors inference
-io kernel lists math namespaces prettyprint words ;
+USING: compiler-backend compiler-frontend errors inference io
+kernel lists math namespaces prettyprint sequences words ;
 
 : supported-cpu? ( -- ? )
     cpu "unknown" = not ;
@@ -25,7 +25,7 @@ M: compound (compile) ( word -- )
 : precompile ( word -- )
     #! Print linear IR of word.
     [
-        word-def dataflow optimize linearize simplify sequence.
+        word-def dataflow optimize linearize simplify [ . ] each
     ] with-scope ;
 
 : compile-postponed ( -- )
index ffd6aa0becadd129119f2086af7b80af9b82ac13..3dfe44a471bc3d663c8293c1eefe93b0c742bee1 100644 (file)
@@ -155,8 +155,8 @@ sequences vectors words ;
     >r load-inputs 2unseq swap dup r> execute ,
     0 0 %replace-d , ; inline
 
-: literal-fixnum? ( value -- ? )
-    dup literal? [ literal-value fixnum? ] [ drop f ] ifte ;
+: literal-immediate? ( value -- ? )
+    dup literal? [ literal-value immediate? ] [ drop f ] ifte ;
 
 : binary-op-imm ( imm op -- )
     1 %dec-d , in-1
@@ -166,7 +166,7 @@ sequences vectors words ;
 : binary-op ( node op -- )
     #! out is a vreg where the vop stores the result.
     fixnum-imm? [
-        >r dup node-peek dup literal-fixnum? [
+        >r dup node-peek dup literal-immediate? [
             literal-value r> binary-op-imm drop
         ] [
             drop r> binary-op-reg
index 57a0bc547c32e05a6f6cf590bb40394a14896a59..dc4552a6de8a29b21c1715eda48bd6118246ca72 100644 (file)
@@ -137,7 +137,3 @@ M: object error. ( error -- ) . ;
         save-error rethrow
     ] 5 setenv
     kernel-error 12 setenv ;
-
-! So that stage 2 boot gives a useful error message if something
-! fails after this file is loaded.
-init-error-handler
index fb95bbe375dbac46bcfb86a9ed403b9d38c5a2e6..ce7cdb86f808bb813740236ed80da0dbc09aee78 100644 (file)
@@ -1,17 +1,14 @@
 ! Copyright (C) 2004, 2005 Slava Pestov.
 ! See http://factor.sf.net/license.txt for BSD license.
-IN: words USING: kernel math namespaces parser sequences strings ;
-
-SYMBOL: gensym-count
-
-: (gensym) ( -- name )
-    "G:" global [
-        gensym-count [ 1 + dup ] change
-    ] bind number>string append ;
+IN: words
+USING: hashtables kernel math namespaces parser sequences
+strings ;
 
 : gensym ( -- word )
     #! Return a word that is distinct from every other word, and
     #! is not contained in any vocabulary.
-    (gensym) f <word> ;
+    "G:"
+    global [ \ gensym dup inc get ] bind
+    number>string append f <word> ;
 
-global [ 0 gensym-count set ] bind
+0 \ gensym global set-hash
index 2cc4cd05a11f9a8e42f0ec62662fb22afee9c61b..65a50983625bff0dab98de9ad44eddd1c896a67e 100644 (file)
@@ -38,7 +38,7 @@ SYMBOL: structured-input
     [
         2 nesting-limit set
         5 length-limit set
-        <block pprint-elements block> newline
+        <block pprint-elements block> newline
     ] with-pprint ;
 
 : pane-call ( quot pane -- )
index 280a9971f48555788d2b0c0401d480881317b4d1..40244d86df4c362652ef692d1ce64d17bfa48dfe 100644 (file)
@@ -5,26 +5,29 @@ USING: generic kernel lists math matrices namespaces sequences
 threads vectors styles ;
 
 ! A viewport can be scrolled.
-TUPLE: viewport origin ;
+TUPLE: viewport ;
 
 ! A scroller combines a viewport with two x and y sliders.
 TUPLE: scroller viewport x y bottom? ;
 
-: viewport-dim gadget-child pref-dim ;
+: scroller-origin ( scroller -- { x y 0 } )
+    dup scroller-x slider-value
+    swap scroller-y slider-value
+    0 3vector ;
+
+: find-scroller [ scroller? ] find-parent ;
 
-: fix-scroll ( origin viewport -- origin )
-    dup rect-dim swap viewport-dim v- vmax { 0 0 0 } vmin ;
+: viewport-dim gadget-child pref-dim ;
 
 C: viewport ( content -- viewport )
     <gadget> over set-delegate
     t over set-gadget-root?
-    [ add-gadget ] keep
-    { 0 0 0 } over set-viewport-origin ;
+    [ add-gadget ] keep ;
 
 M: viewport pref-dim gadget-child pref-dim ;
 
 M: viewport layout* ( viewport -- )
-    dup viewport-origin over fix-scroll
+    dup find-scroller scroller-origin vneg
     swap gadget-child dup prefer
     set-rect-loc ;
 
@@ -38,23 +41,14 @@ M: viewport focusable-child* ( viewport -- gadget )
     [ [ slider-vector v. ] keep set-slider-page ] keep
     fix-slider ;
 
-: update-slider ( scroller slider -- )
-    >r dup rect-dim
-    over viewport-dim
-    rot scroller-viewport viewport-origin vneg
-    r> set-slider ;
-
-: update-sliders ( scroller -- )
-    dup
-    dup scroller-x update-slider
-    dup scroller-y update-slider ;
+: update-slider ( scroller value slider -- )
+    >r >r scroller-viewport dup rect-dim swap viewport-dim
+    r> r> set-slider ;
 
-: scroll ( origin scroller -- )
-    [
-        scroller-viewport [ fix-scroll ] keep
-        [ set-viewport-origin ] keep
-        relayout
-    ] keep update-sliders ;
+: scroll ( scroller value -- )
+    2dup
+    over scroller-x update-slider
+    over scroller-y update-slider ;
 
 : add-viewport 2dup set-scroller-viewport add-center ;
 
@@ -63,7 +57,7 @@ M: viewport focusable-child* ( viewport -- gadget )
 : add-y-slider 2dup set-scroller-y add-right ;
 
 : scroll>bottom ( gadget -- )
-    [ scroller? ] find-parent
+    find-scroller
     [ t over set-scroller-bottom? relayout ] when* ;
 
 : scroll-up-line scroller-y -1 swap slide-by-line ;
@@ -72,7 +66,8 @@ M: viewport focusable-child* ( viewport -- gadget )
 
 : scroller-actions ( scroller -- )
     dup [ scroll-up-line ] [ button-down 4 ] set-action
-    [ scroll-down-line ] [ button-down 5 ] set-action ;
+    dup [ scroll-down-line ] [ button-down 5 ] set-action
+    [ scroller-viewport relayout ] [ slider-changed ] set-action ;
 
 C: scroller ( gadget -- scroller )
     #! Wrap a scrolling pane around the gadget.
@@ -88,5 +83,5 @@ M: scroller focusable-child* ( scroller -- viewport )
 M: scroller layout* ( scroller -- )
     dup scroller-bottom? [
         f over set-scroller-bottom?
-        dup scroller-viewport viewport-dim vneg over scroll
+        dup dup scroller-viewport viewport-dim scroll
     ] when delegate layout* ;
index 17fc281fb8b0652355b46d22311826f3a0f1d03c..46903c850348a23afcea4e36b56b39922dfcec49 100644 (file)
@@ -38,8 +38,11 @@ TUPLE: slider vector elevator thumb value max page ;
     dup slider-max over slider-page max over set-slider-max
     dup slider-value over fix-slider-value swap set-slider-value ;
 
+SYMBOL: slider-changed
+
 : set-slider-value* ( value slider -- )
-    [ set-slider-value ] keep fix-slider ;
+    [ set-slider-value ] keep [ fix-slider ] keep
+    [ slider-changed ] swap handle-gesture drop ;
 
 : elevator-drag ( elevator -- )
     dup drag-loc >r find-slider r> over slider-vector v.