From 2cebc60eca44c78a441f89a825dd1eb3d60db7d7 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 23 Oct 2010 20:11:12 -0600 Subject: [PATCH] ppc cocoa --- collects/ffi/unsafe/objc.rkt | 7 ++++++- collects/mred/private/wx/cocoa/canvas.rkt | 15 +++++++++++---- collects/mred/private/wx/cocoa/utils.rkt | 7 ++++++- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/collects/ffi/unsafe/objc.rkt b/collects/ffi/unsafe/objc.rkt index b8b2bc95c1..d958c8ea45 100644 --- a/collects/ffi/unsafe/objc.rkt +++ b/collects/ffi/unsafe/objc.rkt @@ -112,9 +112,14 @@ (set-cpointer-tag! p objc_class-tag) p))] [empty-cache (lambda () + ;; If you try things the hard way with Obj-C 2.0, + ;; you need to set up the cache. For ealier + ;; versions, you need to set the cache to #f. + #; (let ([p (malloc 'raw 1 _objc_cache)]) (memset p 0 1 _objc_cache) - p))] + p) + #f)] [meta-super (cast (objc_class-isa super) _pointer _objc_class-pointer)] [new-meta (malloc+memcpy (make-objc_class (objc_class-isa root) diff --git a/collects/mred/private/wx/cocoa/canvas.rkt b/collects/mred/private/wx/cocoa/canvas.rkt index 2e50cc5c6f..704c046914 100644 --- a/collects/mred/private/wx/cocoa/canvas.rkt +++ b/collects/mred/private/wx/cocoa/canvas.rkt @@ -564,10 +564,17 @@ [(scroller val) (when scroller (set-scroller-page! scroller val) - (tellv (scroller-cocoa scroller) setKnobProportion: - #:type _CGFloat (max (min 1.0 (/ val - (+ val (exact->inexact (scroller-range scroller))))) - 0.0)))] + (let ([proportion + (max (min 1.0 (/ val + (+ val (exact->inexact (scroller-range scroller))))) + 0.0)]) + (if old-cocoa? + (tellv (scroller-cocoa scroller) + setFloatValue: #:type _float (tell #:type _float (scroller-cocoa scroller) + floatValue) + knobProportion: #:type _CGFloat proportion) + (tellv (scroller-cocoa scroller) setKnobProportion: + #:type _CGFloat proportion))))] [(scroller) (if scroller (scroller-page scroller) diff --git a/collects/mred/private/wx/cocoa/utils.rkt b/collects/mred/private/wx/cocoa/utils.rkt index bc40b3203f..d6f50c129b 100644 --- a/collects/mred/private/wx/cocoa/utils.rkt +++ b/collects/mred/private/wx/cocoa/utils.rkt @@ -18,7 +18,8 @@ with-autorelease clean-menu-label ->wxb - ->wx) + ->wx + old-cocoa?) (define cocoa-lib (ffi-lib (format "/System/Library/Frameworks/Cocoa.framework/Cocoa"))) (define cf-lib (ffi-lib (format "/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation"))) @@ -69,3 +70,7 @@ (define (->wx wxb) (and wxb (weak-box-value wxb))) + +;; FIXME: need a better test: +(define old-cocoa? (equal? (path->string (system-library-subpath #f)) + "ppc-macosx"))