diff --git a/basis/cocoa/cocoa.factor b/basis/cocoa/cocoa.factor index b3357c607a..c90e238ede 100644 --- a/basis/cocoa/cocoa.factor +++ b/basis/cocoa/cocoa.factor @@ -4,6 +4,7 @@ USING: compiler io kernel cocoa.runtime cocoa.subclassing cocoa.messages cocoa.types sequences words vocabs parser core-foundation.bundles namespaces assocs hashtables compiler.units lexer init ; +FROM: cocoa.messages => selector ; IN: cocoa : (remember-send) ( selector variable -- ) @@ -16,7 +17,16 @@ SYMBOL: sent-messages SYNTAX: -> scan-token dup remember-send suffix! \ send suffix! ; -SYNTAX: ?-> scan-token [ remember-send ] [ drop ] bi ; +SYNTAX: SEL: + scan-token + [ remember-send ] + [ suffix! \ selector suffix! ] bi ; + +SYNTAX: SEND: + scan-token + [ remember-send ] + [ suffix! \ selector suffix! ] + [ suffix! \ lookup-sender suffix! ] tri ; SYMBOL: super-sent-messages diff --git a/basis/cocoa/messages/messages.factor b/basis/cocoa/messages/messages.factor index 1e1cb3d75f..de3d6c3d94 100644 --- a/basis/cocoa/messages/messages.factor +++ b/basis/cocoa/messages/messages.factor @@ -64,15 +64,8 @@ ERROR: no-objc-method name ; : lookup-method ( selector -- method ) dup ?lookup-method [ ] [ no-objc-method ] ?if ; -: (selector/sender) ( selector super? -- alien word ) - [ [ lookup-selector ] [ lookup-method ] bi ] - [ super-message-senders message-senders ? get at ] bi* ; inline - -: selector/sender ( selector -- alien word ) - f (selector/sender) ; inline - -: selector/super-sender ( selector -- alien word ) - t (selector/sender) ; inline +: lookup-sender ( name -- method ) + lookup-method message-senders get at ; MEMO: make-prepare-send ( selector method super? -- quot ) [ diff --git a/basis/ui/backend/cocoa/views/views.factor b/basis/ui/backend/cocoa/views/views.factor index 484c6f5319..c8b6f88d9c 100644 --- a/basis/ui/backend/cocoa/views/views.factor +++ b/basis/ui/backend/cocoa/views/views.factor @@ -151,17 +151,13 @@ CLASS: FactorView < NSOpenGLView NSTextInput METHOD: void prepareOpenGL [ - ?-> setWantsBestResolutionOpenGLSurface: - ?-> backingScaleFactor + self SEL: setWantsBestResolutionOpenGLSurface: + -> respondsToSelector: c-bool> [ - self "setWantsBestResolutionOpenGLSurface:" - lookup-selector -> respondsToSelector: c-bool> [ + self SEND: setWantsBestResolutionOpenGLSurface: + 1 swap execute( x x x -- ) - self "setWantsBestResolutionOpenGLSurface:" - selector/sender 1 swap execute( x x x -- ) - - self "backingScaleFactor" - selector/sender execute( x x -- x ) + self SEND: backingScaleFactor execute( x x -- x ) dup 1.0 > [ gl-scale-factor set-global t retina? set-global ] [ drop ] if