From 9bd84e73f47f19c306b98585c0174139e849a8a2 Mon Sep 17 00:00:00 2001 From: Joe Groff <arcata@gmail.com> Date: Thu, 15 Sep 2011 11:27:16 -0700 Subject: [PATCH] ui.backend: refactor the UI `main-vocab-hook` to use a backend-specific `ui-backend-available?` word, so that loading other backends doesn't change the `main-vocab-hook` out of sync with the backend; fixes #131 --- basis/ui/backend/backend.factor | 9 ++++++++- basis/ui/backend/cocoa/cocoa.factor | 4 +++- basis/ui/backend/gtk/gtk.factor | 4 +++- basis/ui/backend/windows/windows.factor | 4 +++- basis/ui/backend/x11/x11.factor | 4 ++-- 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/basis/ui/backend/backend.factor b/basis/ui/backend/backend.factor index 62636fdcdf..2cea326826 100644 --- a/basis/ui/backend/backend.factor +++ b/basis/ui/backend/backend.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2006, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel namespaces opengl opengl.gl fry ; +USING: command-line kernel namespaces opengl opengl.gl fry ; IN: ui.backend SYMBOL: ui-backend @@ -32,3 +32,10 @@ HOOK: (with-ui) ui-backend ( quot -- ) HOOK: (grab-input) ui-backend ( handle -- ) HOOK: (ungrab-input) ui-backend ( handle -- ) + +HOOK: ui-backend-available? ui-backend ( -- ? ) + +M: object ui-backend-available? + f ; + +[ ui-backend-available? "ui.tools" "listener" ? ] main-vocab-hook set-global diff --git a/basis/ui/backend/cocoa/cocoa.factor b/basis/ui/backend/cocoa/cocoa.factor index e211e31374..aed4741949 100644 --- a/basis/ui/backend/cocoa/cocoa.factor +++ b/basis/ui/backend/cocoa/cocoa.factor @@ -256,4 +256,6 @@ M: cocoa-ui-backend (with-ui) cocoa-ui-backend ui-backend set-global -[ running.app? "ui.tools" "listener" ? ] main-vocab-hook set-global +M: cocoa-ui-backend ui-backend-available? + running.app? ; + diff --git a/basis/ui/backend/gtk/gtk.factor b/basis/ui/backend/gtk/gtk.factor index 9afba9e21e..3bba14b7b4 100644 --- a/basis/ui/backend/gtk/gtk.factor +++ b/basis/ui/backend/gtk/gtk.factor @@ -539,4 +539,6 @@ os unix? os macosx? not and [ { "ui.backend.gtk" "ui.gadgets.editors" } "ui.backend.gtk.input-methods.editors" require-when -[ "DISPLAY" os-env "ui.tools" "listener" ? ] main-vocab-hook set-global +M: gtk-ui-backend ui-backend-available? + "DISPLAY" os-env >boolean ; + diff --git a/basis/ui/backend/windows/windows.factor b/basis/ui/backend/windows/windows.factor index 072924fa57..9e49a1b044 100755 --- a/basis/ui/backend/windows/windows.factor +++ b/basis/ui/backend/windows/windows.factor @@ -861,6 +861,8 @@ M: windows-ui-backend (fullscreen?) ( world -- ? ) [ hwnd>RECT ] [ fullscreen-RECT ] bi [ get-RECT-dimensions 2array 2nip ] bi@ = ; +M: windows-ui-backend ui-backend-available? + t ; + windows-ui-backend ui-backend set-global -[ "ui.tools" ] main-vocab-hook set-global diff --git a/basis/ui/backend/x11/x11.factor b/basis/ui/backend/x11/x11.factor index e2ba7ab4e5..3984ad9699 100644 --- a/basis/ui/backend/x11/x11.factor +++ b/basis/ui/backend/x11/x11.factor @@ -414,5 +414,5 @@ M: x11-ui-backend (ungrab-input) x11-ui-backend ui-backend set-global -[ "DISPLAY" os-env "ui.tools" "listener" ? ] -main-vocab-hook set-global +M: x11-ui-backend ui-backend-available? + "DISPLAY" os-env >boolean ;