From ca6247f3b3e7956bb8e76773bf7534654730e333 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Sat, 26 Jan 2008 16:59:53 -0800 Subject: [PATCH] Catch exceptions thrown by graft* and ungraft* in the notify loop so that the gadgets' graft states remain consistent --- extra/ui/ui.factor | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/extra/ui/ui.factor b/extra/ui/ui.factor index febb56e10f..4daadd2765 100755 --- a/extra/ui/ui.factor +++ b/extra/ui/ui.factor @@ -120,12 +120,12 @@ SYMBOL: ui-hook [ dup update-hand draw-world ] each ; : notify ( gadget -- ) - dup gadget-graft-state { - { { f t } [ dup activate-control dup graft* ] } - { { t f } [ dup activate-control dup ungraft* ] } - } case - dup gadget-graft-state first { f f } { t t } ? - swap set-gadget-graft-state ; + dup gadget-graft-state [ dup { + { { f t } [ over activate-control over graft* ] } + { { t f } [ over activate-control over ungraft* ] } + } case ] + [ first { f f } { t t } ? + swap set-gadget-graft-state ] [ ] cleanup ; : notify-queued ( -- ) graft-queue [ notify ] dlist-slurp ;