From d1ae334046358258a44dc3e0ee6d90f2d3fdde3c Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Fri, 29 Mar 2013 20:33:42 -0700 Subject: [PATCH] ui.backend.cocoa.views: more robust respondsToSelector: (thanks @jckarter). --- basis/cocoa/messages/messages.factor | 8 +++++--- basis/ui/backend/cocoa/views/views.factor | 9 +++++---- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/basis/cocoa/messages/messages.factor b/basis/cocoa/messages/messages.factor index f6c9eb8a05..bc678b76a8 100644 --- a/basis/cocoa/messages/messages.factor +++ b/basis/cocoa/messages/messages.factor @@ -49,6 +49,9 @@ MEMO: ( name -- sel ) f \ selector-tuple boa ; object>> ] if ; +: lookup-selector ( name -- alien ) + 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 ] [ 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 ) [ - [ \ , ] when - swap , \ selector , + [ \ , ] when swap lookup-selector , ] [ ] make swap second length 2 - '[ _ _ ndip ] ; diff --git a/basis/ui/backend/cocoa/views/views.factor b/basis/ui/backend/cocoa/views/views.factor index f22f9ccb50..6a19093068 100644 --- a/basis/ui/backend/cocoa/views/views.factor +++ b/basis/ui/backend/cocoa/views/views.factor @@ -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 -- )