[Openmcl-devel] Using the COCOA BRIDGE

Oscar Chappel oachappel at yahoo.com
Fri Jun 30 10:37:14 PDT 2017


Hello,
I have just implemented the show-red-window function described in the COCOA BRIDGE page.  When I execute the function I get an instance of the RED-VIEW class that I can inspect and describe.  I can not get this instance to display itself.  Here is the source code:

(in-package "CL-USER")

(require "COCOA")

(defclass red-view (ns:ns-view)
  ()
  (:metaclass ns:+ns-object))

(objc:defmethod (#/drawRect: :void) ((self red-view) (rect :<NSR>ect))
  (#/set (#/redColor ns:ns-color))
  (#_NSRectFill (#/bounds self)))

(defun show-red-window ()
  (ccl::with-autorelease-pool
      (let* ((rect (ns:make-ns-rect 0 0 300 300))
             (w (make-instance 'ns:ns-window
                  :with-content-rect rect
                  :style-mask (logior #$NSTitledWindowMask
                                      #$NSClosableWindowMask
                                      #$NSMiniaturizableWindowMask)
                  :backing #$NSBackingStoreBuffered
                  :defer t)))
        (#/setTitle: w #@"Red Window")
        (#/setContentView: w (#/autorelease (make-instance 'red-view)))
        (#/center w)
        (#/orderFront: w nil)
        (#/contentView w))))

The results of executing show-red-window and describing the resulting instance:

(setf win (show-red-window))
#<RED-VIEW <RedView: 0x6180001203c0> (#x6180001203C0)>
? win
#<RED-VIEW <RedView: 0x6180001203c0> (#x6180001203C0)>
? (describe win)
#<RED-VIEW <RedView: 0x6180001203c0> (#x6180001203C0)>
Class: #<OBJC:OBJC-CLASS RED-VIEW (#x60800005C020)>
Wrapper: #<CCL::CLASS-WRAPPER RED-VIEW #x302000EB514D>
Instance slots
NS:ISA: #<A Foreign Pointer #x1DE0800005C021>
NS:_NEXT-RESPONDER: #<NS-WINDOW <NSWindow: 0x6100001ed200> (#x6100001ED200)>
NS:_FRAME: #<NS-RECT 300 X 300 @ 0,0 (#x6180001203D0) #x302000F7B72D>
NS:_BOUNDS: #<NS-RECT 300 X 300 @ 0,0 (#x6180001203F0) #x302000F7ADDD>
NS:_SUPERVIEW: #<NS-VIEW <NSThemeFrame: 0x306192f0> (#x306192F0)>
NS:_SUBVIEWS: #<A Null Foreign Pointer>
NS:_WINDOW: #<NS-WINDOW <NSWindow: 0x6100001ed200> (#x6100001ED200)>
NS:_G-STATE: #<A Null Foreign Pointer>
NS:_FRAME-MATRIX: #<A Null Foreign Pointer>
NS:_LAYER: #<A Null Foreign Pointer>
NS:_DRAG-TYPES: #<A Null Foreign Pointer>
NS:_VIEW-AUXILIARY: #<A Foreign Pointer (:*
                                         (:STRUCT
                                          :_<NSV>IEW<A>UXILIARY)) #x2191340>
NS:_V-FLAGS: #<A Foreign Pointer (:* (:STRUCT :__<VF>LAGS)) #x618000120450>
NS:_V-FLAGS-2: #<A Foreign Pointer (:* (:STRUCT :__<VF>LAGS2)) #x618000120454>

Am I missing something?  Can anyone help me out?  Thanks.

Oscar Chappel





More information about the Openmcl-devel mailing list