Index: /branches/ide-1.0/ccl/examples/cocoa-prefs.lisp
===================================================================
--- /branches/ide-1.0/ccl/examples/cocoa-prefs.lisp	(revision 6745)
+++ /branches/ide-1.0/ccl/examples/cocoa-prefs.lisp	(revision 6746)
@@ -81,20 +81,5 @@
 
 
-(objc:defmethod (#/observeValueForKeyPath:ofObject:change:context: :void)
-    ((self lisp-preferences-panel)
-     path
-     object
-     change
-     (key (:* :void)))
-  (declare (ignorable path object change key))
-  (#_NSLog #@"key = %@, path = %@, change = %@" :id key :id path :id change)
-  (let* ((default (find key (cocoa-defaults) 
-                        :key (lambda (d)
-                               (objc-constant-string-nsstringptr (cocoa-default-string d)))
-                        :test #'#/isEqualToString:)))
-    (when default
-      (let* ((newval (#/valueForKey: (#/values object) key)))
-        (unless (%null-ptr-p newval)
-          (update-cocoa-default default newval))))))
+
 
 (objc:defmethod #/sharedPanel ((self +lisp-preferences-panel))
@@ -106,8 +91,7 @@
           (make-instance 'font-name-transformer)
           #@"FontNameTransformer")
-         (let* ((sdc (make-instance ns:ns-user-defaults-controller
-                                    :with-defaults +null-ptr+
-                                    :initial-values (cocoa-defaults-initial-values))))
-           (#/setAppliesImmediately: sdc nil)
+         (let* ((sdc (#/sharedUserDefaultsController ns:ns-user-defaults-controller)))
+           (#/setInitialValues: sdc (#/setAppliesImmediately: sdc nil))
+           (cocoa-defaults-initial-values)
            (let* ((controller (make-instance lisp-preferences-window-controller
                                              :with-window-nib-name #@"preferences"))
@@ -115,17 +99,12 @@
              (unless (%null-ptr-p window)
                (#/setFloatingPanel: window t)
-               (dolist (d (cocoa-defaults))
-                 (let* ((key (objc-constant-string-nsstringptr (cocoa-default-string d))))
-                 (#/addObserver:forKeyPath:options:context:
-                  sdc
-                  window
-                  (#/stringWithFormat: ns:ns-string #@"values.%@" key)
-                  0
-                  key)))
+               (#/addObserver:selector:name:object:
+                (#/defaultCenter ns:ns-notification-center)
+                controller
+                (@selector #/defaultsChanged:)
+                #&NSUserDefaultsDidChangeNotification
+                (#/standardUserDefaults ns:ns-user-defaults))
+               #+debug (#_NSLog #@"sdc = %@" :id sdc)
                (setq *lisp-preferences-panel* window)))))))
-
-
-
-
 
   
@@ -144,4 +123,10 @@
   (#/makeKeyAndOrderFront: self +null-ptr+))
 
+(objc:defmethod (#/defaultsChanged: :void)
+    ((self lisp-preferences-window-controller)
+     notification)
+  (declare (ignore notification))
+  (update-cocoa-defaults))
+  
 
 
