! Copyright (C) 2017 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: alien.c-types cocoa cocoa.classes cocoa.messages
-cocoa.runtime combinators core-foundation.strings kernel locals
-;
+cocoa.runtime combinators compiler.units core-foundation.strings
+init kernel locals namespaces sequences ;
IN: cocoa.touchbar
: make-touchbar ( seq self -- touchbar )
action-string lookup-selector { id { id SEL id id SEL } } ?-> buttonWithTitle:target:action: :> button
item button -> setView:
item ;
+
+! Temporary hack to support new touchbar API on old macOS build
+! machines by attempting to re-import the objc-class which
+! causes re-registering of the objc-methods which were not
+! present on the macOS 10.11 build machine. We use a flag
+! to cause this delay only the first time the image is run
+! and then saved.
+<PRIVATE
+SYMBOL: imported?
+PRIVATE>
+[
+ imported? get-global [
+ [
+ {
+ "NSCustomTouchBarItem"
+ "NSTouchBar"
+ "NSTouchBarItem"
+ } [ [ ] import-objc-class ] each
+ ] with-compilation-unit
+ t imported? set-global
+ ] unless
+] "cocoa.touchbar" add-startup-hook