diff --git a/basis/ui/backend/backend.factor b/basis/ui/backend/backend.factor index b7ae44a412..66e53746c2 100644 --- a/basis/ui/backend/backend.factor +++ b/basis/ui/backend/backend.factor @@ -5,6 +5,9 @@ IN: ui.backend SYMBOL: ui-backend +SYMBOL: ui-stop-after-last-window? +ui-stop-after-last-window? [ t ] initialize + HOOK: set-title ui-backend ( string world -- ) HOOK: (set-fullscreen) ui-backend ( world ? -- ) diff --git a/basis/ui/backend/cocoa/cocoa.factor b/basis/ui/backend/cocoa/cocoa.factor index 992e757b4b..3d5635ddd3 100644 --- a/basis/ui/backend/cocoa/cocoa.factor +++ b/basis/ui/backend/cocoa/cocoa.factor @@ -196,7 +196,12 @@ M: cocoa-ui-backend system-alert ] [ 2drop ] if* ; CLASS: FactorApplicationDelegate < NSObject + METHOD: void applicationDidUpdate: id obj [ reset-thread-timer ] ; + + METHOD: char applicationShouldTerminateAfterLastWindowClosed: id app [ + ui-stop-after-last-window? get 1 0 ? + ] ; ; : install-app-delegate ( -- ) diff --git a/basis/ui/tools/tools.factor b/basis/ui/tools/tools.factor index 3bf6fd0ce5..2b526eb73b 100644 --- a/basis/ui/tools/tools.factor +++ b/basis/ui/tools/tools.factor @@ -1,12 +1,10 @@ ! Copyright (C) 2006, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: memory system ui ui.commands ui.gestures ui.tools.browser -ui.tools.common ui.tools.error-list ui.tools.listener -vocabs.refresh ; +USING: memory namespaces system ui ui.backend ui.commands +ui.gestures ui.tools.browser ui.tools.common +ui.tools.error-list ui.tools.listener vocabs.refresh ; IN: ui.tools -MAIN: listener-window - \ refresh-all H{ { +nullary+ t } { +listener+ t } } define-command \ save H{ { +nullary+ t } } define-command @@ -29,3 +27,9 @@ tool "common" f { { T{ key-down f f "F2" } refresh-all } { T{ key-down f f "F3" } show-error-list } } define-command-map + +: ui-tools-main ( -- ) + f ui-stop-after-last-window? set-global + listener-window ; + +MAIN: ui-tools-main