From 555e2c9964347129b12438eea1c79bbad21c5df7 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 21 Nov 2007 03:21:26 -0500 Subject: [PATCH] Fix activate-control --- extra/ui/gadgets/gadgets.factor | 8 ++++-- .../ui/gadgets/incremental/incremental.factor | 25 +++++++++++-------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/extra/ui/gadgets/gadgets.factor b/extra/ui/gadgets/gadgets.factor index 9929cece29..7dd12cb610 100755 --- a/extra/ui/gadgets/gadgets.factor +++ b/extra/ui/gadgets/gadgets.factor @@ -70,8 +70,12 @@ M: gadget model-changed 2drop ; >r r> construct-delegate ; inline : activate-control ( gadget -- ) - dup gadget-model dup [ 2dup add-connection ] when drop - dup gadget-model swap model-changed ; + dup gadget-model dup [ + 2dup add-connection + swap model-changed + ] [ + 2drop + ] if ; : deactivate-control ( gadget -- ) dup gadget-model dup [ 2dup remove-connection ] when 2drop ; diff --git a/extra/ui/gadgets/incremental/incremental.factor b/extra/ui/gadgets/incremental/incremental.factor index a5c7431d36..3e068ead45 100755 --- a/extra/ui/gadgets/incremental/incremental.factor +++ b/extra/ui/gadgets/incremental/incremental.factor @@ -1,6 +1,7 @@ ! Copyright (C) 2005, 2007 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: io kernel math namespaces math.vectors ui.gadgets ; +USING: io kernel math namespaces math.vectors ui.gadgets +dlists ; IN: ui.gadgets.incremental ! Incremental layout allows adding lines to panes to be O(1). @@ -14,12 +15,14 @@ IN: ui.gadgets.incremental ! New gadgets are added at ! incremental-cursor gadget-orientation v* -TUPLE: incremental cursor ; +TUPLE: incremental cursor queue ; : ( pack -- incremental ) - dup pref-dim - { set-gadget-delegate set-incremental-cursor } - incremental construct ; + dup pref-dim { + set-gadget-delegate + set-incremental-cursor + set-incremental-queue + } incremental construct ; M: incremental pref-dim* dup gadget-layout-state [ @@ -40,17 +43,17 @@ M: incremental pref-dim* swap set-rect-loc ; : prefer-incremental ( gadget -- ) - dup forget-pref-dim dup pref-dim over set-rect-dim - layout ; + dup forget-pref-dim dup pref-dim swap set-rect-dim ; : add-incremental ( gadget incremental -- ) not-in-layout - 2dup (add-gadget) - over prefer-incremental + 2dup incremental-queue push-front + add-gadget ; + +: (add-incremental) ( gadget incremental -- ) 2dup incremental-loc tuck update-cursor - dup prefer-incremental - gadget-parent [ invalidate* ] when* ; + prefer-incremental ; : clear-incremental ( incremental -- ) not-in-layout