changeset 709:5a268d5f1cfa

Fixes for tree event handling. Still more to come shortly...
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sat, 12 Mar 2011 04:12:14 +0000
parents 5fe2ca5ef88b
children 78460ff977c1
files mac/dw.m
diffstat 1 files changed, 27 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/mac/dw.m	Sat Mar 12 02:54:04 2011 +0000
+++ b/mac/dw.m	Sat Mar 12 04:12:14 2011 +0000
@@ -243,12 +243,25 @@
             /* Tree class selection event */
 			case 12:
 			{
-				int (* API treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = (int (* API)(HWND, HTREEITEM, char *, void *, void *))handler->signalfunction;
-				char *text = (char *)event;
-				void *user = NULL;
+                int (* API treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = (int (* API)(HWND, HTREEITEM, char *, void *, void *))handler->signalfunction;
+                char *text = (char *)event;
+                void *user = NULL;
+                id item = nil;
+                
+                if([object isMemberOfClass:[NSOutlineView class]])
+                {
+                    item = (id)event;
+                    NSString *nstr = [item pointerAtIndex:1];
+                    
+                    user = [item pointerAtIndex:3];
+                    text = strdup([nstr UTF8String]);
+                    int result = treeselectfunc(handler->window, item, text, handler->data, user);
+                    free(text);
+                    return result;
+                }
 				
-				return treeselectfunc(handler->window, NULL, text, handler->data, user);
-			}
+                return treeselectfunc(handler->window, item, text, handler->data, user);
+ 			}
             /* Set Focus event */
             case 13:
             {
@@ -1048,6 +1061,7 @@
 -(void)addTree:(NSPointerArray *)item and:(NSPointerArray *)parent;
 -(void *)userdata;
 -(void)setUserdata:(void *)input;
+-(void)treeSelectionChanged:(id)sender;
 -(NSScrollView *)scrollview;
 -(void)setScrollview:(NSScrollView *)input;
 -(void)deleteNode:(NSPointerArray *)item;
@@ -1070,6 +1084,7 @@
         textcol = [[NSTableColumn alloc] init];
         [self addTableColumn:textcol];
         [self setOutlineTableColumn:textcol];
+        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(treeSelectionChanged:) name:NSOutlineViewSelectionDidChangeNotification object:[self window]];
     }
     return self;
 }
@@ -1151,6 +1166,13 @@
 }
 -(void *)userdata { return userdata; }
 -(void)setUserdata:(void *)input { userdata = input; }
+-(void)treeSelectionChanged:(id)sender
+{
+    /* Handler for container class */
+    id item = [self itemAtRow:[self selectedRow]];
+
+	_event_handler(self, (void *)item, 12);
+}
 -(NSScrollView *)scrollview { return scrollview; }
 -(void)setScrollview:(NSScrollView *)input { scrollview = input; }
 -(void)deleteNode:(NSPointerArray *)item { _free_tree_recurse(data, item); }