M: listener-gadget tool-help
drop "ui-listener" ;
+: workspace-busy? ( workspace -- ? )
+ listener-gadget swap find-tool nip tool-gadget
+ listener-gadget-input interactor-busy? ;
+
: find-listener ( -- listener )
- listener-gadget find-workspace show-tool tool-gadget ;
+ listener-gadget
+ [ workspace-busy? not ] find-workspace*
+ show-tool tool-gadget ;
: (call-listener) ( quot listener -- )
listener-gadget-input interactor-call ;
: select-tool ( workspace class -- ) swap show-tool drop ;
-: find-workspace ( -- workspace )
- [ workspace? ] find-window [
- dup raise-window world-gadget
- ] [
- workspace-window find-workspace
- ] if* ;
+: find-workspace* ( quot -- workspace )
+ [ dup workspace? [ over call ] [ drop f ] if ] find-window
+ [ nip dup raise-window world-gadget ]
+ [ workspace-window drop find-workspace* ] if* ; inline
+
+: find-workspace ( -- workspace ) [ drop t ] find-workspace* ;
: call-tool ( arg class -- )
find-workspace show-tool call-tool* ;
open-window
listener-gadget get-tool start-listener ;
-: tool-window ( class -- ) workspace-window show-tool drop ;
+: tool-window ( class -- ) workspace-window show-tool 2drop ;
: tool-scroll-up ( workspace -- )
current-page tool-scroller [ scroll-up-page ] when* ;
} define-commands
workspace "tool-window" {
- { "New listener" T{ key-down f { S+ } "F2" } [ listener-gadget tool-window drop ] }
- { "New definitions" T{ key-down f { S+ } "F3" } [ browser tool-window drop ] }
- { "New documentation" T{ key-down f { S+ } "F4" } [ help-gadget tool-window drop ] }
+ { "New listener" T{ key-down f { S+ } "F2" } [ listener-gadget tool-window ] }
+ { "New definitions" T{ key-down f { S+ } "F3" } [ browser tool-window ] }
+ { "New documentation" T{ key-down f { S+ } "F4" } [ help-gadget tool-window ] }
} define-commands
workspace "workflow" {