The code below is a useless program. It's only purpose is to show my question.
By pressing INSERT I add new nodes until the scroller appears. By using ← or → I can see the scroller work. Pressing INSERT triggers the content of the filled-cell of "dialog < frame" to be overwritten by "draw". "draw" triggers "node-gadget => model-changed" which calls "scroll>gadget". But scrolling doesn't work after INSERT. I guess that rendering happens after "scroll>gadget". How can I make scrolling work in this case ? ----------------------------------------------------- USING: accessors colors.constants kernel math math.parser models namespaces sequences ui ui.gadgets ui.gadgets.borders ui.gadgets.frames ui.gadgets.grids ui.gadgets.labels ui.gadgets.packs ui.gadgets.scrollers ui.gestures ui.pens.solid ; IN: test-script SYMBOL: nodes : add-node ( -- n ) nodes get dup length [ suffix nodes set ] keep ; TUPLE: node-gadget < border number ; M: node-gadget model-changed swap value>> over number>> = [ dup scroll>gadget COLOR: black <solid> ] [ f ] if >>boundary relayout-1 ; : <node-gadget> ( n model -- gadget ) swap [ number>string <label> node-gadget new-border ] keep >>number { 22 22 } >>size dup rot add-connection ; TUPLE: dialog < frame ; CONSTANT: chart-cell { 0 1 } : draw ( dialog n -- dialog' ) swap dup model>> <shelf> nodes get [ pick <node-gadget> ] map add-gadgets nip <scroller> chart-cell grid-add [ set-control-value ] keep ; : go ( dialog offset -- ) over control-value + nodes get length rem swap set-control-value ; dialog H{ { T{ key-down { sym "INSERT" } } [ add-node draw drop ] } { T{ key-down { sym "LEFT" } } [ -1 go ] } { T{ key-down { sym "RIGHT" } } [ 1 go ] } } set-gestures : <dialog> ( -- gadget ) 1 2 dialog new-frame chart-cell >>filled-cell "Press ← or → to navigate. Press INSERT to add a number." <label> { 5 9 } <border> { 0 0 } grid-add 0 [ <model> >>model ] keep draw ; 5 [ add-node drop ] times [ <dialog> "dialog" open-window ] with-ui ------------------------------------------------------------------------------ _______________________________________________ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk