changeset 1064:b673b25bbd77

Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert(). Also switched to using the parentForItem method instead of saving the parent in the array.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sat, 11 Jun 2011 17:54:41 +0000
parents 2ebaea72ac95
children 25e0317335fc
files mac/dw.m
diffstat 1 files changed, 14 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/mac/dw.m	Thu Jun 09 00:33:19 2011 +0000
+++ b/mac/dw.m	Sat Jun 11 17:54:41 2011 +0000
@@ -1662,7 +1662,7 @@
 -(id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item;
 -(void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item;
 -(BOOL)outlineView:(NSOutlineView *)outlineView shouldEditTableColumn:(NSTableColumn *)tableColumn item:(id)item;
--(void)addTree:(NSPointerArray *)item and:(NSPointerArray *)parent;
+-(void)addTree:(NSPointerArray *)item and:(NSPointerArray *)parent after:(NSPointerArray *)after;
 -(void *)userdata;
 -(void)setUserdata:(void *)input;
 -(void)treeSelectionChanged:(id)sender;
@@ -1753,7 +1753,7 @@
     }
 }
 -(BOOL)outlineView:(NSOutlineView *)outlineView shouldEditTableColumn:(NSTableColumn *)tableColumn item:(id)item { return NO; }
--(void)addTree:(NSPointerArray *)item and:(NSPointerArray *)parent;
+-(void)addTree:(NSPointerArray *)item and:(NSPointerArray *)parent after:(NSPointerArray *)after
 {
     NSMutableArray *children = data;
     if(parent)
@@ -1772,7 +1772,15 @@
             children = data = [[[NSMutableArray alloc] init] retain];
         }
     }
-    [children addObject:item];
+    if(after)
+    {
+        NSInteger index = [children indexOfObject:after];
+        [children insertObject:item atIndex:index];
+    }
+    else
+    {
+        [children addObject:item];
+    }
 }
 -(void *)userdata { return userdata; }
 -(void)setUserdata:(void *)input { userdata = input; }
@@ -5010,8 +5018,7 @@
     [treenode addPointer:nstr];
     [treenode addPointer:itemdata];
     [treenode addPointer:NULL];
-    [treenode addPointer:parent];
-    [tree addTree:treenode and:parent];
+    [tree addTree:treenode and:parent after:item];
     if(parent)
         [tree reloadItem:parent reloadChildren:YES];
     else
@@ -5060,10 +5067,10 @@
 {
     int _locked_by_me = FALSE;
     HTREEITEM parent;
+    DWTree *tree = handle;
 
     DW_MUTEX_LOCK;
-    NSPointerArray *array = (NSPointerArray *)item;
-    parent = (HTREEITEM)[array pointerAtIndex:4];
+    parent = [tree parentForItem:item];
     DW_MUTEX_UNLOCK;
     return parent;
 }