1 ! Copyright (C) 2006 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
4 USING: arrays errors gadgets gadgets-buttons
5 gadgets-labels gadgets-panes gadgets-presentations
6 gadgets-scrolling gadgets-theme gadgets-viewports gadgets-lists
7 generic hashtables io kernel math models namespaces prettyprint
8 queues sequences test threads sequences words timers ;
10 : update-hand ( gadget -- )
12 dup hand-world get-global eq?
13 [ hand-loc get-global swap move-hand ] [ drop ] if
16 : post-layout ( gadget -- )
17 find-world [ dup world-handle set ] when* ;
19 : layout-queued ( -- )
20 invalid dup queue-empty? [
23 deque dup layout post-layout layout-queued
27 <queue> \ invalid set-global
28 V{ } clone windows set-global ;
33 [ layout-queued ] make-hash hash-values [
35 dup world-handle [ dup draw-world ] when
41 TUPLE: world-error world ;
43 C: world-error ( error world -- error )
44 [ set-world-error-world ] keep
45 [ set-delegate ] keep ;
48 "An error occurred while drawing the world " write
49 dup world-error-world pprint-short "." print
50 "This world has been deactivated to prevent cascading errors." print
53 : draw-world? ( world -- ? )
54 #! We don't draw deactivated worlds, or those with 0 size.
55 #! On Windows, the latter case results in GL errors.
56 dup world-active? swap rect-dim [ zero? not ] all? and ;
58 : draw-world ( world -- )
64 over <world-error> debugger-window
65 f over set-world-active?