diff --git a/Frameworks/AppKit/Browser.environment/AppKit.sj b/Frameworks/AppKit/Browser.environment/AppKit.sj index f4dcf8b39..68bbbeb51 100644 --- a/Frameworks/AppKit/Browser.environment/AppKit.sj +++ b/Frameworks/AppKit/Browser.environment/AppKit.sj @@ -45045,7 +45045,7 @@ var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_ ,["void","CPCoder"])]); } -p;18;CPTreeController.jt;52765;@STATIC;1.0;I;20;Foundation/CPArray.jI;24;Foundation/CPIndexPath.ji;20;CPObjectController.ji;19;CPKeyValueBinding.ji;12;CPTreeNode.jt;52625;objj_executeFile("Foundation/CPArray.j", NO);objj_executeFile("Foundation/CPIndexPath.j", NO);objj_executeFile("CPObjectController.j", YES);objj_executeFile("CPKeyValueBinding.j", YES);objj_executeFile("CPTreeNode.j", YES); +p;18;CPTreeController.jt;54013;@STATIC;1.0;I;20;Foundation/CPArray.jI;24;Foundation/CPIndexPath.ji;20;CPObjectController.ji;19;CPKeyValueBinding.ji;12;CPTreeNode.jt;53873;objj_executeFile("Foundation/CPArray.j", NO);objj_executeFile("Foundation/CPIndexPath.j", NO);objj_executeFile("CPObjectController.j", YES);objj_executeFile("CPKeyValueBinding.j", YES);objj_executeFile("CPTreeNode.j", YES); {var the_class = objj_allocateClassPair(CPObjectController, "CPTreeController"), meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_avoidsEmptySelection", "BOOL"), new objj_ivar("_preservesSelection", "BOOL"), new objj_ivar("_selectsInsertedObjects", "BOOL"), new objj_ivar("_alwaysUsesMultipleValuesMarker", "BOOL"), new objj_ivar("_childrenKeyPath", "CPString"), new objj_ivar("_countKeyPath", "CPString"), new objj_ivar("_leafKeyPath", "CPString"), new objj_ivar("_sortDescriptors", "CPArray"), new objj_ivar("_arrangedObjects", "id"), new objj_ivar("_selectionIndexPaths", "CPArray"), new objj_ivar("_disableSetContent", "BOOL")]);objj_registerClassPair(the_class); class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTreeController__init(self, _cmd) @@ -45184,18 +45184,26 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre value = (CPArray.isa.method_msgSend["array"] || _objj_forward)(CPArray, "array"); if (!(value == null ? value : (value.isa.method_msgSend["isKindOfClass:"] || _objj_forward)(value, "isKindOfClass:", (CPArray.isa.method_msgSend["class"] || _objj_forward)(CPArray, "class")))) value = (CPArray.isa.method_msgSend["arrayWithObject:"] || _objj_forward)(CPArray, "arrayWithObject:", value); + if (self._contentObject === value) + return; var oldSelectedObjects = nil, oldSelectionIndexPaths = nil; if ((self.isa.method_msgSend["preservesSelection"] || _objj_forward)(self, "preservesSelection")) oldSelectedObjects = (self.isa.method_msgSend["selectedObjects"] || _objj_forward)(self, "selectedObjects"); else oldSelectionIndexPaths = (self.isa.method_msgSend["selectionIndexPaths"] || _objj_forward)(self, "selectionIndexPaths"); + (self.isa.method_msgSend["_selectionWillChange"] || _objj_forward)(self, "_selectionWillChange"); + (self.isa.method_msgSend["willChangeValueForKey:"] || _objj_forward)(self, "willChangeValueForKey:", "content"); + (self.isa.method_msgSend["willChangeValueForKey:"] || _objj_forward)(self, "willChangeValueForKey:", "contentArray"); self._contentObject = value; (self.isa.method_msgSend["_rearrangeObjects"] || _objj_forward)(self, "_rearrangeObjects"); if ((self.isa.method_msgSend["preservesSelection"] || _objj_forward)(self, "preservesSelection")) (self.isa.method_msgSend["__setSelectedObjects:"] || _objj_forward)(self, "__setSelectedObjects:", oldSelectedObjects); else (self.isa.method_msgSend["__setSelectionIndexPaths:avoidEmpty:"] || _objj_forward)(self, "__setSelectionIndexPaths:avoidEmpty:", oldSelectionIndexPaths, self._avoidsEmptySelection); + (self.isa.method_msgSend["didChangeValueForKey:"] || _objj_forward)(self, "didChangeValueForKey:", "contentArray"); + (self.isa.method_msgSend["didChangeValueForKey:"] || _objj_forward)(self, "didChangeValueForKey:", "content"); + (self.isa.method_msgSend["_selectionDidChange"] || _objj_forward)(self, "_selectionDidChange"); } ,["void","id"]), new objj_method(sel_getUid("_setContentArray:"), function $CPTreeController___setContentArray_(self, _cmd, anArray) @@ -45215,9 +45223,11 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre ,["id"]), new objj_method(sel_getUid("rearrangeObjects"), function $CPTreeController__rearrangeObjects(self, _cmd) { + (self.isa.method_msgSend["_selectionWillChange"] || _objj_forward)(self, "_selectionWillChange"); (self.isa.method_msgSend["willChangeValueForKey:"] || _objj_forward)(self, "willChangeValueForKey:", "arrangedObjects"); (self.isa.method_msgSend["_rearrangeObjects"] || _objj_forward)(self, "_rearrangeObjects"); (self.isa.method_msgSend["didChangeValueForKey:"] || _objj_forward)(self, "didChangeValueForKey:", "arrangedObjects"); + (self.isa.method_msgSend["_selectionDidChange"] || _objj_forward)(self, "_selectionDidChange"); } ,["void"]), new objj_method(sel_getUid("_rearrangeObjects"), function $CPTreeController___rearrangeObjects(self, _cmd) @@ -45295,10 +45305,7 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre ,["CPArray"]), new objj_method(sel_getUid("setSelectionIndexPaths:"), function $CPTreeController__setSelectionIndexPaths_(self, _cmd, indexPaths) { - (self.isa.method_msgSend["_selectionWillChange"] || _objj_forward)(self, "_selectionWillChange"); - var result = (self.isa.method_msgSend["__setSelectionIndexPaths:avoidEmpty:"] || _objj_forward)(self, "__setSelectionIndexPaths:avoidEmpty:", indexPaths, NO); - (self.isa.method_msgSend["_selectionDidChange"] || _objj_forward)(self, "_selectionDidChange"); - return result; + return (self.isa.method_msgSend["__setSelectionIndexPaths:avoidEmpty:"] || _objj_forward)(self, "__setSelectionIndexPaths:avoidEmpty:", indexPaths, NO); } ,["BOOL","CPArray"]), new objj_method(sel_getUid("_ensureTreeNodesExistForIndexPaths:"), function $CPTreeController___ensureTreeNodesExistForIndexPaths_(self, _cmd, indexPaths) @@ -45370,16 +45377,11 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre } if (((___r1 = self._selectionIndexPaths), ___r1 == null ? ___r1 : (___r1.isa.method_msgSend["isEqualToArray:"] || _objj_forward)(___r1, "isEqualToArray:", newPaths))) return NO; + (self.isa.method_msgSend["_selectionWillChange"] || _objj_forward)(self, "_selectionWillChange"); (self.isa.method_msgSend["willChangeValueForKey:"] || _objj_forward)(self, "willChangeValueForKey:", "selectionIndexPaths"); self._selectionIndexPaths = (newPaths == null ? newPaths : (newPaths.isa.method_msgSend["copy"] || _objj_forward)(newPaths, "copy")); - var binderClass = ((___r1 = (self.isa.method_msgSend["class"] || _objj_forward)(self, "class")), ___r1 == null ? ___r1 : (___r1.isa.method_msgSend["_binderClassForBinding:"] || _objj_forward)(___r1, "_binderClassForBinding:", "selectionIndexPaths")); - if (binderClass) - { - var binding = (binderClass == null ? binderClass : (binderClass.isa.method_msgSend["getBinding:forObject:"] || _objj_forward)(binderClass, "getBinding:forObject:", "selectionIndexPaths", self)); - if (binding) - (binding == null ? binding : (binding.isa.method_msgSend["reverseSetValueFor:"] || _objj_forward)(binding, "reverseSetValueFor:", "selectionIndexPaths")); - } (self.isa.method_msgSend["didChangeValueForKey:"] || _objj_forward)(self, "didChangeValueForKey:", "selectionIndexPaths"); + (self.isa.method_msgSend["_selectionDidChange"] || _objj_forward)(self, "_selectionDidChange"); return YES; var ___r1, ___r2; } @@ -45420,8 +45422,12 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre nodes = (self.isa.method_msgSend["selectedNodes"] || _objj_forward)(self, "selectedNodes"), count = (nodes == null ? nodes : (nodes.isa.method_msgSend["count"] || _objj_forward)(nodes, "count")); for (var i = 0; i < count; i++) - (objects == null ? objects : (objects.isa.method_msgSend["addObject:"] || _objj_forward)(objects, "addObject:", ((___r1 = (nodes == null ? nodes : (nodes.isa.method_msgSend["objectAtIndex:"] || _objj_forward)(nodes, "objectAtIndex:", i))), ___r1 == null ? ___r1 : (___r1.isa.method_msgSend["representedObject"] || _objj_forward)(___r1, "representedObject")))); - return objects; + { + var representedObject = ((___r1 = (nodes == null ? nodes : (nodes.isa.method_msgSend["objectAtIndex:"] || _objj_forward)(nodes, "objectAtIndex:", i))), ___r1 == null ? ___r1 : (___r1.isa.method_msgSend["representedObject"] || _objj_forward)(___r1, "representedObject")); + if (representedObject) + (objects == null ? objects : (objects.isa.method_msgSend["addObject:"] || _objj_forward)(objects, "addObject:", representedObject)); + } + return (_CPObservableArray.isa.method_msgSend["arrayWithArray:"] || _objj_forward)(_CPObservableArray, "arrayWithArray:", objects); var ___r1; } @@ -45526,6 +45532,7 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre ,["void","id","CPIndexPath"]), new objj_method(sel_getUid("insertObjects:atArrangedObjectIndexPaths:"), function $CPTreeController__insertObjects_atArrangedObjectIndexPaths_(self, _cmd, objects, indexPaths) { + (self.isa.method_msgSend["_selectionWillChange"] || _objj_forward)(self, "_selectionWillChange"); (self.isa.method_msgSend["willChangeValueForKey:"] || _objj_forward)(self, "willChangeValueForKey:", "content"); self._disableSetContent = YES; var count = (objects == null ? objects : (objects.isa.method_msgSend["count"] || _objj_forward)(objects, "count")); @@ -45565,6 +45572,7 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre if ((self.isa.method_msgSend["selectsInsertedObjects"] || _objj_forward)(self, "selectsInsertedObjects")) (self.isa.method_msgSend["setSelectionIndexPaths:"] || _objj_forward)(self, "setSelectionIndexPaths:", indexPaths); (self.isa.method_msgSend["didChangeValueForKey:"] || _objj_forward)(self, "didChangeValueForKey:", "content"); + (self.isa.method_msgSend["_selectionDidChange"] || _objj_forward)(self, "_selectionDidChange"); var ___r1; } @@ -45580,6 +45588,7 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre ,["void","CPIndexPath"]), new objj_method(sel_getUid("removeObjectsAtArrangedObjectIndexPaths:"), function $CPTreeController__removeObjectsAtArrangedObjectIndexPaths_(self, _cmd, indexPaths) { + (self.isa.method_msgSend["_selectionWillChange"] || _objj_forward)(self, "_selectionWillChange"); (self.isa.method_msgSend["willChangeValueForKey:"] || _objj_forward)(self, "willChangeValueForKey:", "content"); self._disableSetContent = YES; var sortedPaths = (indexPaths == null ? indexPaths : (indexPaths.isa.method_msgSend["sortedArrayUsingSelector:"] || _objj_forward)(indexPaths, "sortedArrayUsingSelector:", sel_getUid("compare:"))), @@ -45612,6 +45621,7 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre self._disableSetContent = NO; (self.isa.method_msgSend["_rearrangeObjects"] || _objj_forward)(self, "_rearrangeObjects"); (self.isa.method_msgSend["didChangeValueForKey:"] || _objj_forward)(self, "didChangeValueForKey:", "content"); + (self.isa.method_msgSend["_selectionDidChange"] || _objj_forward)(self, "_selectionDidChange"); var ___r1; } @@ -45632,6 +45642,9 @@ class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function return; (self.isa.method_msgSend["exposeBinding:"] || _objj_forward)(self, "exposeBinding:", "contentArray"); (self.isa.method_msgSend["exposeBinding:"] || _objj_forward)(self, "exposeBinding:", "sortDescriptors"); + (self.isa.method_msgSend["exposeBinding:"] || _objj_forward)(self, "exposeBinding:", "selectionIndexPaths"); + (self.isa.method_msgSend["exposeBinding:"] || _objj_forward)(self, "exposeBinding:", "selectionIndexPath"); + (self.isa.method_msgSend["exposeBinding:"] || _objj_forward)(self, "exposeBinding:", "selectedObjects"); } ,["void"]), new objj_method(sel_getUid("keyPathsForValuesAffectingContentArray"), function $CPTreeController__keyPathsForValuesAffectingContentArray(self, _cmd) @@ -45641,7 +45654,7 @@ class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function ,["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingArrangedObjects"), function $CPTreeController__keyPathsForValuesAffectingArrangedObjects(self, _cmd) { - return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "content", "sortDescriptors", "childrenKeyPath"); + return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "content", "contentArray", "sortDescriptors", "childrenKeyPath"); } ,["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingSelectionIndexPath"), function $CPTreeController__keyPathsForValuesAffectingSelectionIndexPath(self, _cmd) @@ -45651,27 +45664,27 @@ class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function ,["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingSelectedObjects"), function $CPTreeController__keyPathsForValuesAffectingSelectedObjects(self, _cmd) { - return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths"); + return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths", "arrangedObjects"); } ,["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingSelectedNodes"), function $CPTreeController__keyPathsForValuesAffectingSelectedNodes(self, _cmd) { - return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths"); -} - -,["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanAddChild"), function $CPTreeController__keyPathsForValuesAffectingCanAddChild(self, _cmd) -{ - return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths"); + return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths", "arrangedObjects"); } ,["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanInsert"), function $CPTreeController__keyPathsForValuesAffectingCanInsert(self, _cmd) { - return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths"); + return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "editable"); } ,["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanInsertChild"), function $CPTreeController__keyPathsForValuesAffectingCanInsertChild(self, _cmd) { - return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths"); + return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths", "editable"); +} + +,["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanAddChild"), function $CPTreeController__keyPathsForValuesAffectingCanAddChild(self, _cmd) +{ + return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths", "editable"); } ,["CPSet"])]); diff --git a/Frameworks/AppKit/CommonJS.environment/AppKit.sj b/Frameworks/AppKit/CommonJS.environment/AppKit.sj index 83b13fec3..d634cc23d 100644 --- a/Frameworks/AppKit/CommonJS.environment/AppKit.sj +++ b/Frameworks/AppKit/CommonJS.environment/AppKit.sj @@ -43715,7 +43715,7 @@ var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_ ,["void","CPCoder"])]); } -p;18;CPTreeController.jt;52765;@STATIC;1.0;I;20;Foundation/CPArray.jI;24;Foundation/CPIndexPath.ji;20;CPObjectController.ji;19;CPKeyValueBinding.ji;12;CPTreeNode.jt;52625;objj_executeFile("Foundation/CPArray.j", NO);objj_executeFile("Foundation/CPIndexPath.j", NO);objj_executeFile("CPObjectController.j", YES);objj_executeFile("CPKeyValueBinding.j", YES);objj_executeFile("CPTreeNode.j", YES); +p;18;CPTreeController.jt;54013;@STATIC;1.0;I;20;Foundation/CPArray.jI;24;Foundation/CPIndexPath.ji;20;CPObjectController.ji;19;CPKeyValueBinding.ji;12;CPTreeNode.jt;53873;objj_executeFile("Foundation/CPArray.j", NO);objj_executeFile("Foundation/CPIndexPath.j", NO);objj_executeFile("CPObjectController.j", YES);objj_executeFile("CPKeyValueBinding.j", YES);objj_executeFile("CPTreeNode.j", YES); {var the_class = objj_allocateClassPair(CPObjectController, "CPTreeController"), meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_avoidsEmptySelection", "BOOL"), new objj_ivar("_preservesSelection", "BOOL"), new objj_ivar("_selectsInsertedObjects", "BOOL"), new objj_ivar("_alwaysUsesMultipleValuesMarker", "BOOL"), new objj_ivar("_childrenKeyPath", "CPString"), new objj_ivar("_countKeyPath", "CPString"), new objj_ivar("_leafKeyPath", "CPString"), new objj_ivar("_sortDescriptors", "CPArray"), new objj_ivar("_arrangedObjects", "id"), new objj_ivar("_selectionIndexPaths", "CPArray"), new objj_ivar("_disableSetContent", "BOOL")]);objj_registerClassPair(the_class); class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTreeController__init(self, _cmd) @@ -43854,18 +43854,26 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre value = (CPArray.isa.method_msgSend["array"] || _objj_forward)(CPArray, "array"); if (!(value == null ? value : (value.isa.method_msgSend["isKindOfClass:"] || _objj_forward)(value, "isKindOfClass:", (CPArray.isa.method_msgSend["class"] || _objj_forward)(CPArray, "class")))) value = (CPArray.isa.method_msgSend["arrayWithObject:"] || _objj_forward)(CPArray, "arrayWithObject:", value); + if (self._contentObject === value) + return; var oldSelectedObjects = nil, oldSelectionIndexPaths = nil; if ((self.isa.method_msgSend["preservesSelection"] || _objj_forward)(self, "preservesSelection")) oldSelectedObjects = (self.isa.method_msgSend["selectedObjects"] || _objj_forward)(self, "selectedObjects"); else oldSelectionIndexPaths = (self.isa.method_msgSend["selectionIndexPaths"] || _objj_forward)(self, "selectionIndexPaths"); + (self.isa.method_msgSend["_selectionWillChange"] || _objj_forward)(self, "_selectionWillChange"); + (self.isa.method_msgSend["willChangeValueForKey:"] || _objj_forward)(self, "willChangeValueForKey:", "content"); + (self.isa.method_msgSend["willChangeValueForKey:"] || _objj_forward)(self, "willChangeValueForKey:", "contentArray"); self._contentObject = value; (self.isa.method_msgSend["_rearrangeObjects"] || _objj_forward)(self, "_rearrangeObjects"); if ((self.isa.method_msgSend["preservesSelection"] || _objj_forward)(self, "preservesSelection")) (self.isa.method_msgSend["__setSelectedObjects:"] || _objj_forward)(self, "__setSelectedObjects:", oldSelectedObjects); else (self.isa.method_msgSend["__setSelectionIndexPaths:avoidEmpty:"] || _objj_forward)(self, "__setSelectionIndexPaths:avoidEmpty:", oldSelectionIndexPaths, self._avoidsEmptySelection); + (self.isa.method_msgSend["didChangeValueForKey:"] || _objj_forward)(self, "didChangeValueForKey:", "contentArray"); + (self.isa.method_msgSend["didChangeValueForKey:"] || _objj_forward)(self, "didChangeValueForKey:", "content"); + (self.isa.method_msgSend["_selectionDidChange"] || _objj_forward)(self, "_selectionDidChange"); } ,["void","id"]), new objj_method(sel_getUid("_setContentArray:"), function $CPTreeController___setContentArray_(self, _cmd, anArray) @@ -43885,9 +43893,11 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre ,["id"]), new objj_method(sel_getUid("rearrangeObjects"), function $CPTreeController__rearrangeObjects(self, _cmd) { + (self.isa.method_msgSend["_selectionWillChange"] || _objj_forward)(self, "_selectionWillChange"); (self.isa.method_msgSend["willChangeValueForKey:"] || _objj_forward)(self, "willChangeValueForKey:", "arrangedObjects"); (self.isa.method_msgSend["_rearrangeObjects"] || _objj_forward)(self, "_rearrangeObjects"); (self.isa.method_msgSend["didChangeValueForKey:"] || _objj_forward)(self, "didChangeValueForKey:", "arrangedObjects"); + (self.isa.method_msgSend["_selectionDidChange"] || _objj_forward)(self, "_selectionDidChange"); } ,["void"]), new objj_method(sel_getUid("_rearrangeObjects"), function $CPTreeController___rearrangeObjects(self, _cmd) @@ -43965,10 +43975,7 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre ,["CPArray"]), new objj_method(sel_getUid("setSelectionIndexPaths:"), function $CPTreeController__setSelectionIndexPaths_(self, _cmd, indexPaths) { - (self.isa.method_msgSend["_selectionWillChange"] || _objj_forward)(self, "_selectionWillChange"); - var result = (self.isa.method_msgSend["__setSelectionIndexPaths:avoidEmpty:"] || _objj_forward)(self, "__setSelectionIndexPaths:avoidEmpty:", indexPaths, NO); - (self.isa.method_msgSend["_selectionDidChange"] || _objj_forward)(self, "_selectionDidChange"); - return result; + return (self.isa.method_msgSend["__setSelectionIndexPaths:avoidEmpty:"] || _objj_forward)(self, "__setSelectionIndexPaths:avoidEmpty:", indexPaths, NO); } ,["BOOL","CPArray"]), new objj_method(sel_getUid("_ensureTreeNodesExistForIndexPaths:"), function $CPTreeController___ensureTreeNodesExistForIndexPaths_(self, _cmd, indexPaths) @@ -44040,16 +44047,11 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre } if (((___r1 = self._selectionIndexPaths), ___r1 == null ? ___r1 : (___r1.isa.method_msgSend["isEqualToArray:"] || _objj_forward)(___r1, "isEqualToArray:", newPaths))) return NO; + (self.isa.method_msgSend["_selectionWillChange"] || _objj_forward)(self, "_selectionWillChange"); (self.isa.method_msgSend["willChangeValueForKey:"] || _objj_forward)(self, "willChangeValueForKey:", "selectionIndexPaths"); self._selectionIndexPaths = (newPaths == null ? newPaths : (newPaths.isa.method_msgSend["copy"] || _objj_forward)(newPaths, "copy")); - var binderClass = ((___r1 = (self.isa.method_msgSend["class"] || _objj_forward)(self, "class")), ___r1 == null ? ___r1 : (___r1.isa.method_msgSend["_binderClassForBinding:"] || _objj_forward)(___r1, "_binderClassForBinding:", "selectionIndexPaths")); - if (binderClass) - { - var binding = (binderClass == null ? binderClass : (binderClass.isa.method_msgSend["getBinding:forObject:"] || _objj_forward)(binderClass, "getBinding:forObject:", "selectionIndexPaths", self)); - if (binding) - (binding == null ? binding : (binding.isa.method_msgSend["reverseSetValueFor:"] || _objj_forward)(binding, "reverseSetValueFor:", "selectionIndexPaths")); - } (self.isa.method_msgSend["didChangeValueForKey:"] || _objj_forward)(self, "didChangeValueForKey:", "selectionIndexPaths"); + (self.isa.method_msgSend["_selectionDidChange"] || _objj_forward)(self, "_selectionDidChange"); return YES; var ___r1, ___r2; } @@ -44090,8 +44092,12 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre nodes = (self.isa.method_msgSend["selectedNodes"] || _objj_forward)(self, "selectedNodes"), count = (nodes == null ? nodes : (nodes.isa.method_msgSend["count"] || _objj_forward)(nodes, "count")); for (var i = 0; i < count; i++) - (objects == null ? objects : (objects.isa.method_msgSend["addObject:"] || _objj_forward)(objects, "addObject:", ((___r1 = (nodes == null ? nodes : (nodes.isa.method_msgSend["objectAtIndex:"] || _objj_forward)(nodes, "objectAtIndex:", i))), ___r1 == null ? ___r1 : (___r1.isa.method_msgSend["representedObject"] || _objj_forward)(___r1, "representedObject")))); - return objects; + { + var representedObject = ((___r1 = (nodes == null ? nodes : (nodes.isa.method_msgSend["objectAtIndex:"] || _objj_forward)(nodes, "objectAtIndex:", i))), ___r1 == null ? ___r1 : (___r1.isa.method_msgSend["representedObject"] || _objj_forward)(___r1, "representedObject")); + if (representedObject) + (objects == null ? objects : (objects.isa.method_msgSend["addObject:"] || _objj_forward)(objects, "addObject:", representedObject)); + } + return (_CPObservableArray.isa.method_msgSend["arrayWithArray:"] || _objj_forward)(_CPObservableArray, "arrayWithArray:", objects); var ___r1; } @@ -44196,6 +44202,7 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre ,["void","id","CPIndexPath"]), new objj_method(sel_getUid("insertObjects:atArrangedObjectIndexPaths:"), function $CPTreeController__insertObjects_atArrangedObjectIndexPaths_(self, _cmd, objects, indexPaths) { + (self.isa.method_msgSend["_selectionWillChange"] || _objj_forward)(self, "_selectionWillChange"); (self.isa.method_msgSend["willChangeValueForKey:"] || _objj_forward)(self, "willChangeValueForKey:", "content"); self._disableSetContent = YES; var count = (objects == null ? objects : (objects.isa.method_msgSend["count"] || _objj_forward)(objects, "count")); @@ -44235,6 +44242,7 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre if ((self.isa.method_msgSend["selectsInsertedObjects"] || _objj_forward)(self, "selectsInsertedObjects")) (self.isa.method_msgSend["setSelectionIndexPaths:"] || _objj_forward)(self, "setSelectionIndexPaths:", indexPaths); (self.isa.method_msgSend["didChangeValueForKey:"] || _objj_forward)(self, "didChangeValueForKey:", "content"); + (self.isa.method_msgSend["_selectionDidChange"] || _objj_forward)(self, "_selectionDidChange"); var ___r1; } @@ -44250,6 +44258,7 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre ,["void","CPIndexPath"]), new objj_method(sel_getUid("removeObjectsAtArrangedObjectIndexPaths:"), function $CPTreeController__removeObjectsAtArrangedObjectIndexPaths_(self, _cmd, indexPaths) { + (self.isa.method_msgSend["_selectionWillChange"] || _objj_forward)(self, "_selectionWillChange"); (self.isa.method_msgSend["willChangeValueForKey:"] || _objj_forward)(self, "willChangeValueForKey:", "content"); self._disableSetContent = YES; var sortedPaths = (indexPaths == null ? indexPaths : (indexPaths.isa.method_msgSend["sortedArrayUsingSelector:"] || _objj_forward)(indexPaths, "sortedArrayUsingSelector:", sel_getUid("compare:"))), @@ -44282,6 +44291,7 @@ class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTre self._disableSetContent = NO; (self.isa.method_msgSend["_rearrangeObjects"] || _objj_forward)(self, "_rearrangeObjects"); (self.isa.method_msgSend["didChangeValueForKey:"] || _objj_forward)(self, "didChangeValueForKey:", "content"); + (self.isa.method_msgSend["_selectionDidChange"] || _objj_forward)(self, "_selectionDidChange"); var ___r1; } @@ -44302,6 +44312,9 @@ class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function return; (self.isa.method_msgSend["exposeBinding:"] || _objj_forward)(self, "exposeBinding:", "contentArray"); (self.isa.method_msgSend["exposeBinding:"] || _objj_forward)(self, "exposeBinding:", "sortDescriptors"); + (self.isa.method_msgSend["exposeBinding:"] || _objj_forward)(self, "exposeBinding:", "selectionIndexPaths"); + (self.isa.method_msgSend["exposeBinding:"] || _objj_forward)(self, "exposeBinding:", "selectionIndexPath"); + (self.isa.method_msgSend["exposeBinding:"] || _objj_forward)(self, "exposeBinding:", "selectedObjects"); } ,["void"]), new objj_method(sel_getUid("keyPathsForValuesAffectingContentArray"), function $CPTreeController__keyPathsForValuesAffectingContentArray(self, _cmd) @@ -44311,7 +44324,7 @@ class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function ,["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingArrangedObjects"), function $CPTreeController__keyPathsForValuesAffectingArrangedObjects(self, _cmd) { - return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "content", "sortDescriptors", "childrenKeyPath"); + return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "content", "contentArray", "sortDescriptors", "childrenKeyPath"); } ,["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingSelectionIndexPath"), function $CPTreeController__keyPathsForValuesAffectingSelectionIndexPath(self, _cmd) @@ -44321,27 +44334,27 @@ class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function ,["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingSelectedObjects"), function $CPTreeController__keyPathsForValuesAffectingSelectedObjects(self, _cmd) { - return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths"); + return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths", "arrangedObjects"); } ,["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingSelectedNodes"), function $CPTreeController__keyPathsForValuesAffectingSelectedNodes(self, _cmd) { - return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths"); -} - -,["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanAddChild"), function $CPTreeController__keyPathsForValuesAffectingCanAddChild(self, _cmd) -{ - return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths"); + return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths", "arrangedObjects"); } ,["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanInsert"), function $CPTreeController__keyPathsForValuesAffectingCanInsert(self, _cmd) { - return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths"); + return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "editable"); } ,["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanInsertChild"), function $CPTreeController__keyPathsForValuesAffectingCanInsertChild(self, _cmd) { - return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths"); + return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths", "editable"); +} + +,["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanAddChild"), function $CPTreeController__keyPathsForValuesAffectingCanAddChild(self, _cmd) +{ + return (CPSet.isa.method_msgSend["setWithObjects:"] || _objj_forward)(CPSet, "setWithObjects:", "selectionIndexPaths", "editable"); } ,["CPSet"])]); diff --git a/Resources/CPTreeControllerTest/AppController.j b/Resources/CPTreeControllerTest/AppController.j index 15e24c0e4..65640056f 100644 --- a/Resources/CPTreeControllerTest/AppController.j +++ b/Resources/CPTreeControllerTest/AppController.j @@ -16,9 +16,11 @@ - (void)applicationDidFinishLaunching:(CPNotification)aNotification { - var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask], + var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMake(0, 0, 850, 400) styleMask:CPTitledWindowMask | CPClosableWindowMask | CPMiniaturizableWindowMask], contentView = [theWindow contentView]; + [theWindow setTitle:@"CPTreeController Bindings Test"]; + // 1. Create the Data Model var root1 = [[Node alloc] initWithName:@"Root 1" children:[]], child1 = [[Node alloc] initWithName:@"Child 1.1" children:[]], @@ -32,36 +34,39 @@ // 2. Setup the Tree Controller treeController = [[CPTreeController alloc] init]; + [treeController setObjectClass:[Node class]]; [treeController setChildrenKeyPath:@"children"]; [treeController setContent:contentArray]; - // 3. Setup the Outline View - var scrollView = [[CPScrollView alloc] initWithFrame:CGRectMake(20, 20, 250, 300)]; - [scrollView setAutohidesScrollers:YES]; + // 3. Setup Outline View 1 (Left) + var scrollView1 = [[CPScrollView alloc] initWithFrame:CGRectMake(20, 20, 240, 300)]; + [scrollView1 setAutohidesScrollers:YES]; - var outlineView = [[CPOutlineView alloc] initWithFrame:CGRectMake(0, 0, 250, 300)]; - var column = [[CPTableColumn alloc] initWithIdentifier:@"name"]; - [[column headerView] setStringValue:@"Node Name"]; - [column setWidth:240]; - [column setEditable:YES]; // Editable to test bidirectional bindings in the tree - - [outlineView addTableColumn:column]; - [outlineView setOutlineTableColumn:column]; - [outlineView setAllowsMultipleSelection:YES]; - [scrollView setDocumentView:outlineView]; - [contentView addSubview:scrollView]; + var outlineView1 = [[CPOutlineView alloc] initWithFrame:CGRectMake(0, 0, 240, 300)], + column1 = [[CPTableColumn alloc] initWithIdentifier:@"name"]; + [[column1 headerView] setStringValue:@"Outline View 1"]; + [column1 setWidth:230]; + [column1 setEditable:YES]; - // 4. Establish Bindings for the Outline View - [outlineView bind:@"content" toObject:treeController withKeyPath:@"arrangedObjects" options:nil]; - [outlineView bind:@"selectionIndexPaths" toObject:treeController withKeyPath:@"selectionIndexPaths" options:nil]; + [outlineView1 addTableColumn:column1]; + [outlineView1 setOutlineTableColumn:column1]; + [outlineView1 setAllowsMultipleSelection:YES]; + [scrollView1 setDocumentView:outlineView1]; + [contentView addSubview:scrollView1]; - var scrollView2 = [[CPScrollView alloc] initWithFrame:CGRectMake(300, 20, 250, 300)]; + // Bind Outline View 1 (Content & Selection) + [outlineView1 bind:@"content" toObject:treeController withKeyPath:@"arrangedObjects" options:nil]; + [outlineView1 bind:@"selectionIndexPaths" toObject:treeController withKeyPath:@"selectionIndexPaths" options:nil]; + + // 4. Setup Outline View 2 (Middle - Synced) + var scrollView2 = [[CPScrollView alloc] initWithFrame:CGRectMake(280, 20, 240, 300)]; [scrollView2 setAutohidesScrollers:YES]; - var outlineView2 = [[CPOutlineView alloc] initWithFrame:CGRectMake(0, 0, 250, 300)]; - var column2 = [[CPTableColumn alloc] initWithIdentifier:@"name"]; - [[column2 headerView] setStringValue:@"Node Name"]; - [column2 setWidth:240]; - [column2 setEditable:YES]; // Editable to test bidirectional bindings in the tree + + var outlineView2 = [[CPOutlineView alloc] initWithFrame:CGRectMake(0, 0, 240, 300)], + column2 = [[CPTableColumn alloc] initWithIdentifier:@"name"]; + [[column2 headerView] setStringValue:@"Outline View 2 (Synced)"]; + [column2 setWidth:230]; + [column2 setEditable:YES]; [outlineView2 addTableColumn:column2]; [outlineView2 setOutlineTableColumn:column2]; @@ -69,20 +74,68 @@ [scrollView2 setDocumentView:outlineView2]; [contentView addSubview:scrollView2]; - // 4. Establish Bindings for the Outline View + // Bind Outline View 2 (Content & Selection) [outlineView2 bind:@"content" toObject:treeController withKeyPath:@"arrangedObjects" options:nil]; [outlineView2 bind:@"selectionIndexPaths" toObject:treeController withKeyPath:@"selectionIndexPaths" options:nil]; + // 5. Setup Inspector / Detail Controls (Right Panel) + var panelX = 540; + // Label: Detail Inspector + var detailLabel = [CPTextField labelWithTitle:@"Detail Binding (selection.name):"]; + [detailLabel setFrameOrigin:CGPointMake(panelX, 20)]; + [contentView addSubview:detailLabel]; + // 2-Way Detail Binding TextField + var nameField = [CPTextField textFieldWithStringValue:@"" placeholder:@"No Selection" width:260]; + [nameField setFrameOrigin:CGPointMake(panelX, 45)]; + [nameField setEditable:YES]; + [nameField bind:@"value" toObject:treeController withKeyPath:@"selection.name" options:nil]; + [contentView addSubview:nameField]; + + // Programmatic Selection Button + var selectBtn = [CPButton buttonWithTitle:@"Select 'Child 1.2' [0, 1]"]; + [selectBtn setFrame:CGRectMake(panelX, 90, 260, 28)]; + [selectBtn setTarget:self]; + [selectBtn setAction:@selector(selectSpecificNode:)]; + [contentView addSubview:selectBtn]; + + // Add Child Button (Action + Enabled Binding) + var addChildBtn = [CPButton buttonWithTitle:@"Add Child to Selection"]; + [addChildBtn setFrame:CGRectMake(panelX, 125, 260, 28)]; + [addChildBtn setTarget:treeController]; + [addChildBtn setAction:@selector(addChild:)]; + [addChildBtn bind:@"enabled" toObject:treeController withKeyPath:@"canAddChild" options:nil]; + [contentView addSubview:addChildBtn]; + + // Remove Selected Button + var removeBtn = [CPButton buttonWithTitle:@"Remove Selected"]; + [removeBtn setFrame:CGRectMake(panelX, 160, 260, 28)]; + [removeBtn setTarget:treeController]; + [removeBtn setAction:@selector(remove:)]; + [contentView addSubview:removeBtn]; + + // Selection Log Label + var logHeaderLabel = [CPTextField labelWithTitle:@"KVO selectionIndexPaths Log:"]; + [logHeaderLabel setFrameOrigin:CGPointMake(panelX, 210)]; + [contentView addSubview:logHeaderLabel]; + + logField = [CPTextField labelWithTitle:@"Selected: Root 1"]; + [logField setFrame:CGRectMake(panelX, 235, 260, 60)]; + [logField setLineBreakMode:CPLineBreakByWordWrapping]; + [contentView addSubview:logField]; + + // 6. Register Observer for Live Selection Log + [treeController addObserver:self forKeyPath:@"selectionIndexPaths" options:CPKeyValueObservingOptionNew context:nil]; + + [theWindow center]; [theWindow orderFront:self]; } - (void)selectSpecificNode:(id)sender { // Programmatically select index path [0, 1] which is "Child 1.2" - // This tests the `_CPOutlineViewSelectionIndexPathsBinder` auto-expand logic. - var path =[CPIndexPath indexPathWithIndexes:[0, 1]]; + var path = [CPIndexPath indexPathWithIndexes:[0, 1]]; [treeController setSelectionIndexPath:path]; } @@ -94,12 +147,14 @@ if ([selectedObjects count] > 0) { var names = [CPMutableArray array]; - for (var i = 0; i <[selectedObjects count]; i++) - [names addObject:[selectedObjects[i] name]];[logField setStringValue:[names componentsJoinedByString:@", "]]; + for (var i = 0; i < [selectedObjects count]; i++) + [names addObject:[selectedObjects[i] name]]; + + [logField setStringValue:[CPString stringWithFormat:@"Selected: %@", [names componentsJoinedByString:@", "]]]; } else { - [logField setStringValue:@"Nothing selected"]; + [logField setStringValue:@"Selected: (Nothing selected)"]; } } } @@ -121,16 +176,21 @@ if (self) { name = aName; - children = someChildren; + children = someChildren || []; } return self; } -// Explicit accessors to ensure Key-Value Observing (KVO) works flawlessly. +- (id)init +{ + return [self initWithName:@"New Node" children:[]]; +} + - (void)setName:(CPString)aName { [self willChangeValueForKey:@"name"]; - name = aName;[self didChangeValueForKey:@"name"]; + name = aName; + [self didChangeValueForKey:@"name"]; } - (CPString)name @@ -150,4 +210,9 @@ return children; } +- (CPString)description +{ + return [CPString stringWithFormat:@"", [self name]]; +} + @end diff --git a/Resources/recipes.txt b/Resources/recipes.txt index 9015c0f3e..16a2528ad 100644 --- a/Resources/recipes.txt +++ b/Resources/recipes.txt @@ -1,147 +1,147 @@ -1787285012409|ArrayController1| -1787285012423|ArrayControllerInitialSelectionTest| -1787285012437|ArrayControllerRemovingFirstTest| -1787285012450|AttachedSheet| -1787285012464|AttachedSheet2| -1787285012477|Bindings| -1787285012490|CGCanvasContext| -1787285012504|CGPath| -1787285012517|CPAlertTest| -1787285012531|CPAnimatablePropertyContainerTest| -1787285012544|CPAnimationContextTest| -1787285012557|CPAnimationTest| -1787285012571|CPBinder-echo-bug| -1787285012584|CPBoxCibTest| -1787285012598|CPBoxTest| -1787285012611|CPBrowserTest| -1787285012624|CPButtonBarTest| -1787285012638|CPButtonKeyEquivalentDefaultTest| -1787285012651|CPButtonTest| -1787285012664|CPByteCountFormatter| -1787285012678|CPCollectionViewNibTest| -1787285012691|CPColor-CPImage-description| -1787285012704|CPColorWellBindings| -1787285012718|CPComboBoxTest| -1787285012731|CPControlPerformClickExceptionTest| -1787285012744|CPControlSize| -1787285012758|CPCursor| -1787285012771|CPDateFormatterTest| -1787285012784|CPDatePickerTest| -1787285012798|CPDictionaryControllerTest| -1787285012811|CPDocumentControllerTest| -1787285012824|CPFormatterTest| -1787285012838|CPGraphicsTest| -1787285012851|CPImageAndTextViewImageScaling| -1787285012864|CPImageViewAlignmentScaling| -1787285012878|CPImageViewTest| -1787285012891|CPImageViewbindingsTest| -1787285012904|CPLevelIndicator| -1787285012918|CPLocalizationTest| -1787285012931|CPLogTest| -1787285012944|CPMarkdownParser| -1787285012958|CPMenuCALayerTest| -1787285012971|CPMenuEnabledBindingsTest| -1787285012984|CPMenuKeyEquivalents| -1787285012998|CPMenuRemoveAllTest| -1787285013011|CPMenuSubmenuPlacementConstraints| -1787285013024|CPMenuTest| -1787285013038|CPOutlineViewCibTest| -1787285013051|CPOutlineViewTest| -1787285013065|CPOutlineViewViewBasedCibTest| -1787285013078|CPPanelTest| -1787285013092|CPPlatformWindow| -1787285013105|CPPlattformWindowMinSize| -1787285013119|CPPopUpButtonBindings| -1787285013132|CPPopUpButtonTest| -1787285013146|CPPopover| -1787285013159|CPPredicateEditorCibTest| -1787285013173|CPProgressIndicator| -1787285013186|CPPropertyListSerializationTest| -1787285013199|CPRadioBindings| -1787285013213|CPRuleEditorCibTest| -1787285013226|CPRuleEditorTestI8N| -1787285013240|CPScrollView| -1787285013253|CPScrollView2| -1787285013267|CPSearchField| -1787285013280|CPSearchFieldPredicateBinding| -1787285013293|CPSegmentedControlBindings| -1787285013307|CPSegmentedControlTest| -1787285013320|CPSoundTest| -1787285013334|CPSplitViewDivider| -1787285013347|CPSplitViewTest| -1787285013361|CPStackViewTest| -1787285013374|CPStepperBindings| -1787285013388|CPStepperNibTest| -1787285013401|CPTabView2| -1787285013414|CPTabViewBindings| -1787285013428|CPTabViewNib| -1787285013441|CPTableViewGroupRows| -1787285013454|CPTextField| -1787285013468|CPTextFieldEditingStyleTest| -1787285013481|CPTextFieldHeightTest| -1787285013495|CPTextFieldMovementsTest| -1787285013508|CPTextFieldMultiline| -1787285013521|CPTextView| -1787285013535|CPTextViewCibTest| -1787285013548|CPTextViewDelegateAndNotifications| -1787285013562|CPTimeZone| -1787285013575|CPTokenFieldTest| -1787285013588|CPToolTip| -1787285013602|CPToolbarTest| -1787285013615|CPTreeControllerTest| -1787285013628|CPURLConnectionAsyncTest| -1787285013642|CPURLConnectionSynchronousTest| -1787285013655|CPUserDefaults| -1787285013669|CPUserDefaultsControllerTest| -1787285013682|CPUserNotificationTest| -1787285013695|CPViewController| -1787285013709|CPVisualEffectViewTest| -1787285013722|CPWebViewTest| -1787285013735|CPWebViewTest2| -1787285013749|CPWindowLiveResizeTest| -1787285013762|CPWindowMovableTest| -1787285013776|CPWindowResizeStyle| -1787285013789|ChildWindows| -1787285013803|CompilationTests| -1787285013816|ContinuouslyUpdatesValueBinding| -1787285013830|CopyAndPaste| -1787285013843|CrossOriginTest| -1787285013857|FF4096Test| -1787285013870|FontEnhancementTest| -1787285013883|FontMetricsExplorer| -1787285013897|KeyEquivalents| -1787285013910|KeyViewLoopTest| -1787285013923|KeyWindowInTheBackgroundActivation| -1787285013937|LayoutTest| -1787285013950|LoadTimeTest| -1787285013964|LongBindings| -1787285013977|MobileTest| -1787285013991|MultipleValueBindings| -1787285014004|NSBoxTest| -1787285014017|NSBrowserTest| -1787285014031|NewTextFieldBezel| -1787285014044|Nib2CibAlignment| -1787285014057|Nib2CibBaselineAlignementTest| -1787285014071|Nib2CibSubviewsOrderTest| -1787285014084|NibAppRemixed| -1787285014098|PatternFillTest| -1787285014111|PlatformWindows| -1787285014124|PopUpButtonEscTest| -1787285014138|ScalingTest| -1787285014151|ScalingTest2| -1787285014164|ScrollviewTheming| -1787285014178|SheetWindowOrderFrontIssue| -1787285014191|SimpleBindings2| -1787285014205|SmartFoldersDemo| -1787285014218|TableTest| -1787285014232|ThemeBrowser| -1787285014245|ThemeKitchenSink| -1787285014258|TrackingArea| -1787285014272|UndoRedoWithMenuUpdate| -1787285014285|UserlandNSTest| -1787285014298|layoutEphemeralSubviewTest| -1787285014312|loadDynamicFrameworks| -1787285014325|performKeyEquivalentTest| -1787285014339|predicateWithFormat| -1787285014352|resignFirstResponder-CPControlTextDidEndEditing| -1787285014365|sizeToFitFix| +1787690216872|ArrayController1| +1787690216885|ArrayControllerInitialSelectionTest| +1787690216898|ArrayControllerRemovingFirstTest| +1787690216911|AttachedSheet| +1787690216924|AttachedSheet2| +1787690216937|Bindings| +1787690216950|CGCanvasContext| +1787690216963|CGPath| +1787690216976|CPAlertTest| +1787690216989|CPAnimatablePropertyContainerTest| +1787690217002|CPAnimationContextTest| +1787690217015|CPAnimationTest| +1787690217027|CPBinder-echo-bug| +1787690217040|CPBoxCibTest| +1787690217053|CPBoxTest| +1787690217066|CPBrowserTest| +1787690217080|CPButtonBarTest| +1787690217093|CPButtonKeyEquivalentDefaultTest| +1787690217106|CPButtonTest| +1787690217119|CPByteCountFormatter| +1787690217132|CPCollectionViewNibTest| +1787690217145|CPColor-CPImage-description| +1787690217158|CPColorWellBindings| +1787690217171|CPComboBoxTest| +1787690217184|CPControlPerformClickExceptionTest| +1787690217197|CPControlSize| +1787690217210|CPCursor| +1787690217222|CPDateFormatterTest| +1787690217235|CPDatePickerTest| +1787690217248|CPDictionaryControllerTest| +1787690217261|CPDocumentControllerTest| +1787690217274|CPFormatterTest| +1787690217287|CPGraphicsTest| +1787690217300|CPImageAndTextViewImageScaling| +1787690217313|CPImageViewAlignmentScaling| +1787690217326|CPImageViewTest| +1787690217339|CPImageViewbindingsTest| +1787690217352|CPLevelIndicator| +1787690217365|CPLocalizationTest| +1787690217378|CPLogTest| +1787690217391|CPMarkdownParser| +1787690217403|CPMenuCALayerTest| +1787690217416|CPMenuEnabledBindingsTest| +1787690217429|CPMenuKeyEquivalents| +1787690217442|CPMenuRemoveAllTest| +1787690217455|CPMenuSubmenuPlacementConstraints| +1787690217468|CPMenuTest| +1787690217481|CPOutlineViewCibTest| +1787690217494|CPOutlineViewTest| +1787690217507|CPOutlineViewViewBasedCibTest| +1787690217520|CPPanelTest| +1787690217533|CPPlatformWindow| +1787690217546|CPPlattformWindowMinSize| +1787690217559|CPPopUpButtonBindings| +1787690217572|CPPopUpButtonTest| +1787690217585|CPPopover| +1787690217598|CPPredicateEditorCibTest| +1787690217610|CPProgressIndicator| +1787690217624|CPPropertyListSerializationTest| +1787690217637|CPRadioBindings| +1787690217650|CPRuleEditorCibTest| +1787690217662|CPRuleEditorTestI8N| +1787690217675|CPScrollView| +1787690217688|CPScrollView2| +1787690217701|CPSearchField| +1787690217714|CPSearchFieldPredicateBinding| +1787690217727|CPSegmentedControlBindings| +1787690217740|CPSegmentedControlTest| +1787690217753|CPSoundTest| +1787690217766|CPSplitViewDivider| +1787690217779|CPSplitViewTest| +1787690217792|CPStackViewTest| +1787690217805|CPStepperBindings| +1787690217818|CPStepperNibTest| +1787690217831|CPTabView2| +1787690217844|CPTabViewBindings| +1787690217857|CPTabViewNib| +1787690217870|CPTableViewGroupRows| +1787690217882|CPTextField| +1787690217895|CPTextFieldEditingStyleTest| +1787690217908|CPTextFieldHeightTest| +1787690217921|CPTextFieldMovementsTest| +1787690217934|CPTextFieldMultiline| +1787690217947|CPTextView| +1787690217960|CPTextViewCibTest| +1787690217973|CPTextViewDelegateAndNotifications| +1787690217986|CPTimeZone| +1787690217999|CPTokenFieldTest| +1787690218012|CPToolTip| +1787690218025|CPToolbarTest| +1787690218038|CPTreeControllerTest| +1787690218051|CPURLConnectionAsyncTest| +1787690218064|CPURLConnectionSynchronousTest| +1787690218077|CPUserDefaults| +1787690218089|CPUserDefaultsControllerTest| +1787690218102|CPUserNotificationTest| +1787690218115|CPViewController| +1787690218128|CPVisualEffectViewTest| +1787690218141|CPWebViewTest| +1787690218154|CPWebViewTest2| +1787690218167|CPWindowLiveResizeTest| +1787690218180|CPWindowMovableTest| +1787690218193|CPWindowResizeStyle| +1787690218206|ChildWindows| +1787690218218|CompilationTests| +1787690218231|ContinuouslyUpdatesValueBinding| +1787690218244|CopyAndPaste| +1787690218257|CrossOriginTest| +1787690218270|FF4096Test| +1787690218283|FontEnhancementTest| +1787690218296|FontMetricsExplorer| +1787690218309|KeyEquivalents| +1787690218322|KeyViewLoopTest| +1787690218335|KeyWindowInTheBackgroundActivation| +1787690218348|LayoutTest| +1787690218361|LoadTimeTest| +1787690218374|LongBindings| +1787690218386|MobileTest| +1787690218399|MultipleValueBindings| +1787690218412|NSBoxTest| +1787690218426|NSBrowserTest| +1787690218439|NewTextFieldBezel| +1787690218452|Nib2CibAlignment| +1787690218465|Nib2CibBaselineAlignementTest| +1787690218477|Nib2CibSubviewsOrderTest| +1787690218490|NibAppRemixed| +1787690218503|PatternFillTest| +1787690218516|PlatformWindows| +1787690218529|PopUpButtonEscTest| +1787690218542|ScalingTest| +1787690218555|ScalingTest2| +1787690218568|ScrollviewTheming| +1787690218581|SheetWindowOrderFrontIssue| +1787690218594|SimpleBindings2| +1787690218607|SmartFoldersDemo| +1787690218620|TableTest| +1787690218633|ThemeBrowser| +1787690218646|ThemeKitchenSink| +1787690218658|TrackingArea| +1787690218671|UndoRedoWithMenuUpdate| +1787690218684|UserlandNSTest| +1787690218697|layoutEphemeralSubviewTest| +1787690218710|loadDynamicFrameworks| +1787690218723|performKeyEquivalentTest| +1787690218736|predicateWithFormat| +1787690218749|resignFirstResponder-CPControlTextDidEndEditing| +1787690218762|sizeToFitFix|