! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays colors.constants dlists io
-io.streams.string kernel namespaces opengl sequences ui
-ui.baseline-alignment ui.gadgets ui.gadgets.buttons
-ui.gadgets.labels ui.gadgets.private ui.pens ui.render ui.text ;
+USING: accessors arrays colors.constants dlists io io.streams.string
+kernel namespaces opengl sequences ui ui.baseline-alignment ui.gadgets
+ui.gadgets.buttons ui.gadgets.labels ui.gadgets.private ui.pens
+ui.render ui.text vectors ;
IN: ui.gadgets.debug
! We can't print to output-stream here because that might be a pane
: with-grafted-gadget ( gadget quot -- )
[
<dlist> \ graft-queue set
- <dlist> \ layout-queue set
+ 100 <vector> \ layout-queue set
over
graft notify-queued
dip
! Copyright (C) 2005, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays binary-search combinators concurrency.flags
-deques dlists fry kernel locals make math math.order math.rectangles
+deques fry kernel locals make math math.order math.rectangles
math.vectors models namespaces sequences threads vectors ;
IN: ui.gadgets
: layout-later ( gadget -- )
layout-queue [
- [ push-back notify-ui-thread ] [ drop ] if*
- ] [
- dlist-length layout-queue-limit > [ yield ] when
- ] bi ;
+ [ push notify-ui-thread ]
+ [ length layout-queue-limit > [ yield ] when ] bi
+ ] [ drop ] if* ;
: invalidate* ( gadget -- )
\ invalidate* >>layout-state
USING: accessors arrays assocs boxes classes.tuple
classes.tuple.parser combinators combinators.short-circuit
concurrency.flags concurrency.promises continuations deques
-destructors dlists fry init kernel lexer make math namespaces
-parser sequences sets strings threads ui.backend ui.gadgets
-ui.gadgets.private ui.gadgets.worlds ui.gestures vocabs.parser
+destructors dlists fry init kernel lexer make math namespaces parser
+sequences sets strings threads ui.backend ui.gadgets
+ui.gadgets.private ui.gadgets.worlds ui.gestures vectors vocabs.parser
words ;
IN: ui
f hand-world set-global
f world set-global
<dlist> \ graft-queue set-global
- <dlist> \ layout-queue set-global
+ 100 <vector> \ layout-queue set-global
<dlist> \ gesture-queue set-global
V{ } clone ui-windows set-global ;
dup hand-world get-global eq?
[ hand-loc get-global swap move-hand ] [ drop ] if ;
-: (layout-queued) ( deque -- seq )
- [
- in-layout? on
- [
- dup layout find-world [ , ] when*
- ] slurp-deque
- ] { } make members ; inline
+: slurp-vector ( .. seq quot: ( ... elt -- .. ) -- )
+ over '[ _ empty? not ] -rot '[ _ pop @ ] while ; inline
: layout-queued ( -- seq )
- layout-queue dup deque-empty?
- [ drop { } ] [ (layout-queued) ] if ;
+ layout-queue [
+ in-layout? on
+ [ dup layout find-world [ , ] when* ] slurp-vector
+ ] { } make members ;
: redraw-worlds ( seq -- )
[ dup update-hand draw-world ] each ;