Changeset 6746


Ignore:
Timestamp:
Jun 16, 2007, 7:17:37 PM (17 years ago)
Author:
Gary Byers
Message:

Don't observe defaults changes. Do register for notification.
Make sure that we're using the shared defaults controller, like the
.nib expects us to.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ide-1.0/ccl/examples/cocoa-prefs.lisp

    r6735 r6746  
    8181
    8282
    83 (objc:defmethod (#/observeValueForKeyPath:ofObject:change:context: :void)
    84     ((self lisp-preferences-panel)
    85      path
    86      object
    87      change
    88      (key (:* :void)))
    89   (declare (ignorable path object change key))
    90   (#_NSLog #@"key = %@, path = %@, change = %@" :id key :id path :id change)
    91   (let* ((default (find key (cocoa-defaults)
    92                         :key (lambda (d)
    93                                (objc-constant-string-nsstringptr (cocoa-default-string d)))
    94                         :test #'#/isEqualToString:)))
    95     (when default
    96       (let* ((newval (#/valueForKey: (#/values object) key)))
    97         (unless (%null-ptr-p newval)
    98           (update-cocoa-default default newval))))))
     83
    9984
    10085(objc:defmethod #/sharedPanel ((self +lisp-preferences-panel))
     
    10691          (make-instance 'font-name-transformer)
    10792          #@"FontNameTransformer")
    108          (let* ((sdc (make-instance ns:ns-user-defaults-controller
    109                                     :with-defaults +null-ptr+
    110                                     :initial-values (cocoa-defaults-initial-values))))
    111            (#/setAppliesImmediately: sdc nil)
     93         (let* ((sdc (#/sharedUserDefaultsController ns:ns-user-defaults-controller)))
     94           (#/setInitialValues: sdc (#/setAppliesImmediately: sdc nil))
     95           (cocoa-defaults-initial-values)
    11296           (let* ((controller (make-instance lisp-preferences-window-controller
    11397                                             :with-window-nib-name #@"preferences"))
     
    11599             (unless (%null-ptr-p window)
    116100               (#/setFloatingPanel: window t)
    117                (dolist (d (cocoa-defaults))
    118                  (let* ((key (objc-constant-string-nsstringptr (cocoa-default-string d))))
    119                  (#/addObserver:forKeyPath:options:context:
    120                   sdc
    121                   window
    122                   (#/stringWithFormat: ns:ns-string #@"values.%@" key)
    123                   0
    124                   key)))
     101               (#/addObserver:selector:name:object:
     102                (#/defaultCenter ns:ns-notification-center)
     103                controller
     104                (@selector #/defaultsChanged:)
     105                #&NSUserDefaultsDidChangeNotification
     106                (#/standardUserDefaults ns:ns-user-defaults))
     107               #+debug (#_NSLog #@"sdc = %@" :id sdc)
    125108               (setq *lisp-preferences-panel* window)))))))
    126 
    127 
    128 
    129 
    130109
    131110 
     
    144123  (#/makeKeyAndOrderFront: self +null-ptr+))
    145124
     125(objc:defmethod (#/defaultsChanged: :void)
     126    ((self lisp-preferences-window-controller)
     127     notification)
     128  (declare (ignore notification))
     129  (update-cocoa-defaults))
     130 
    146131
    147132
Note: See TracChangeset for help on using the changeset viewer.