ui.backend.cocoa.views: more robust respondsToSelector: (thanks @jckarter).
parent
281ed1f89a
commit
d1ae334046
basis
cocoa/messages
ui/backend/cocoa/views
|
@ -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 ] ;
|
||||
|
||||
|
|
|
@ -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 -- )
|
||||
|
|
Loading…
Reference in New Issue