Changeset 642


Ignore:
Timestamp:
Mar 8, 2004, 5:56:23 AM (21 years ago)
Author:
Gary Byers
Message:

Factor in window creation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/examples/cocoa-window.lisp

    r613 r642  
    355355    dict))
    356356
     357
     358(defun get-cocoa-window-flag (w flagname)
     359  (case flagname
     360    (:accepts-mouse-moved-events
     361     (send w 'accepts-mouse-moved-events))
     362    (:cursor-rects-enabled
     363     (send w 'are-cursor-rects-enabled))
     364    (:auto-display
     365     (send w 'is-autodisplay))))
     366
     367
     368
     369(defun (setf get-cocoa-window-flag) (value w flagname)
     370  (case flagname
     371    (:accepts-mouse-moved-events
     372     (send w :set-accepts-mouse-moved-events value))
     373    (:auto-display
     374     (send w :set-autodisplay value))))
     375
     376
     377
     378(defun activate-window (w)
     379  ;; Make w the "key" and frontmost window.  Make it visible, if need be.
     380  (send w :make-key-and-order-front nil))
     381
     382(defun new-cocoa-window (&key
     383                         (class (find-class 'ns:ns-window))
     384                         (title nil)
     385                         (x 200.0)
     386                         (y 200.0)
     387                         (height 200.0)
     388                         (width 500.0)
     389                         (closable t)
     390                         (iconifyable t)
     391                         (metal t)
     392                         (expandable t)
     393                         (backing :buffered)
     394                         (defer nil)
     395                         (accepts-mouse-moved-events nil)
     396                         (auto-display t)
     397                         (activate t))
     398  (rlet ((frame :<NSR>ect :origin.x (float x) :origin.y (float y) :size.width (float width) :size.height (float height)))
     399    (let* ((stylemask
     400            (logior #$NSTitledWindowMask
     401                    (if closable #$NSClosableWindowMask 0)
     402                    (if iconifyable #$NSMiniaturizableWindowMask 0)
     403                    (if expandable #$NSResizableWindowMask 0)
     404                    (if metal #$NSTexturedBackgroundWindowMask 0)))
     405           (backing-type
     406            (ecase backing
     407              ((t :retained) #$NSBackingStoreRetained)
     408              ((nil :nonretained) #$NSBackingStoreNonretained)
     409              (:buffered #$NSBackingStoreBuffered)))
     410           (w (make-instance
     411               class
     412               :with-content-rect frame
     413               :style-mask stylemask
     414               :backing backing-type
     415               :defer defer)))
     416      (setf (get-cocoa-window-flag w :accepts-mouse-moved-events)
     417            accepts-mouse-moved-events
     418            (get-cocoa-window-flag w :auto-display)
     419            auto-display)
     420      (when activate (activate-window w))
     421      (when title (send w :set-title (%make-nsstring title)))
     422      w)))
Note: See TracChangeset for help on using the changeset viewer.