ui.backend.cocoa.views: more robust respondsToSelector: (thanks @jckarter).

db4
John Benediktsson 2013-03-29 20:33:42 -07:00
parent 281ed1f89a
commit d1ae334046
2 changed files with 10 additions and 7 deletions
basis
cocoa/messages
ui/backend/cocoa/views

View File

@ -49,6 +49,9 @@ MEMO: <selector> ( name -- sel ) f \ selector-tuple boa ;
object>>
] if ;
: lookup-selector ( name -- alien )
<selector> selector ;
SYMBOL: objc-methods
objc-methods [ H{ } clone ] initialize
@ -62,7 +65,7 @@ ERROR: no-objc-method name ;
dup ?lookup-method [ ] [ no-objc-method ] ?if ;
: (selector/sender) ( selector super? -- alien word )
[ [ <selector> selector ] [ lookup-method ] bi ]
[ [ lookup-selector ] [ lookup-method ] bi ]
[ super-message-senders message-senders ? get at ] bi* ; inline
: selector/sender ( selector -- alien word )
@ -73,8 +76,7 @@ ERROR: no-objc-method name ;
MEMO: make-prepare-send ( selector method super? -- quot )
[
[ \ <super> , ] when
swap <selector> , \ selector ,
[ \ <super> , ] when swap lookup-selector ,
] [ ] make
swap second length 2 - '[ _ _ ndip ] ;

View File

@ -5,9 +5,9 @@ arrays assocs cocoa cocoa.application cocoa.classes
cocoa.messages cocoa.pasteboard cocoa.runtime cocoa.subclassing
cocoa.types cocoa.views combinators core-foundation.strings
core-graphics core-graphics.types core-text io.encodings.utf8
kernel locals math math.order math.rectangles namespaces opengl
sequences system-info threads ui.gadgets ui.gadgets.private
ui.gadgets.worlds ui.gestures ui.private vocabs vocabs.parser ;
kernel locals math math.rectangles namespaces opengl sequences
threads ui.gadgets ui.gadgets.private ui.gadgets.worlds
ui.gestures ui.private ;
IN: ui.backend.cocoa.views
: send-mouse-moved ( view event -- )
@ -151,7 +151,8 @@ CLASS: FactorView < NSOpenGLView NSTextInput
METHOD: void prepareOpenGL [
os-version { 10 7 0 } after=? [
self "setWantsBestResolutionOpenGLSurface:"
lookup-selector -> respondsToSelector: c-bool> [
self "setWantsBestResolutionOpenGLSurface:"
selector/sender 1 swap execute( x x x -- )