From 60ca9804f143ff1f0c51e2bada26e69db475fa6e Mon Sep 17 00:00:00 2001 From: slava Date: Mon, 24 Jul 2006 19:42:33 +0000 Subject: [PATCH] Field gadget now has an action quotation --- TODO.FACTOR.txt | 8 +++++++- library/ui/text/field.factor | 6 ++++-- library/ui/text/interactor.factor | 2 +- library/ui/tools/search.factor | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/TODO.FACTOR.txt b/TODO.FACTOR.txt index 9937307d95..fd32563aa8 100644 --- a/TODO.FACTOR.txt +++ b/TODO.FACTOR.txt @@ -6,7 +6,8 @@ - scroll to caret - clicking input doesn't resize editor gadget - better listener multi-line expression handling - - C+p/C+n with empty history bombs + - C+p/C+n with loc out of range + - don't add empties to the editor history - httpd search tools - remaining HTML issues need fixing @@ -107,6 +108,11 @@ - the invalid recursion form case needs to be fixed, for inlines too - code gc ++ something like masterscope: + +- does word A call word B (indirectly)? +- which variables are read, written in a quotation + + misc: - consider: swap tail --> tail, swap head --> head diff --git a/library/ui/text/field.factor b/library/ui/text/field.factor index 2a5c9ff066..8173f08438 100644 --- a/library/ui/text/field.factor +++ b/library/ui/text/field.factor @@ -3,10 +3,11 @@ IN: gadgets-text USING: gadgets gadgets-controls generic kernel models ; -TUPLE: field model ; +TUPLE: field model quot ; -C: field ( model -- field ) +C: field ( model quot -- field ) over set-delegate + [ set-field-quot ] keep [ set-field-model ] keep dup dup set-control-self ; @@ -17,6 +18,7 @@ C: field ( model -- field ) : field-commit ( field -- string ) [ editor-text ] keep dup field-model [ dupd set-model ] when* + dup field-quot [ dupd call ] when* control-model dup add-history clear-doc ; field H{ diff --git a/library/ui/text/interactor.factor b/library/ui/text/interactor.factor index bf750cb7e0..272d17f60e 100644 --- a/library/ui/text/interactor.factor +++ b/library/ui/text/interactor.factor @@ -8,7 +8,7 @@ TUPLE: interactor output continuation ; C: interactor ( output -- gadget ) [ set-interactor-output ] keep - f over set-gadget-delegate + f f over set-gadget-delegate dup dup set-control-self ; : interactor-eval ( string gadget -- ) diff --git a/library/ui/tools/search.factor b/library/ui/tools/search.factor index 55e983c5b0..8b8e045dbd 100644 --- a/library/ui/tools/search.factor +++ b/library/ui/tools/search.factor @@ -13,7 +13,7 @@ TUPLE: search-gadget input ; C: search-gadget ( quot -- ) >r f dup r> { - { [ ] set-search-gadget-input f @top } + { [ f ] set-search-gadget-input f @top } { [ swap ] f f @center } } make-frame* ;