comparison mac/dw.m @ 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
comparison
equal deleted inserted replaced
708:5fe2ca5ef88b 709:5a268d5f1cfa
241 return valuechangedfunc(handler->window, selected, handler->data);; 241 return valuechangedfunc(handler->window, selected, handler->data);;
242 } 242 }
243 /* Tree class selection event */ 243 /* Tree class selection event */
244 case 12: 244 case 12:
245 { 245 {
246 int (* API treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = (int (* API)(HWND, HTREEITEM, char *, void *, void *))handler->signalfunction; 246 int (* API treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = (int (* API)(HWND, HTREEITEM, char *, void *, void *))handler->signalfunction;
247 char *text = (char *)event; 247 char *text = (char *)event;
248 void *user = NULL; 248 void *user = NULL;
249 id item = nil;
250
251 if([object isMemberOfClass:[NSOutlineView class]])
252 {
253 item = (id)event;
254 NSString *nstr = [item pointerAtIndex:1];
255
256 user = [item pointerAtIndex:3];
257 text = strdup([nstr UTF8String]);
258 int result = treeselectfunc(handler->window, item, text, handler->data, user);
259 free(text);
260 return result;
261 }
249 262
250 return treeselectfunc(handler->window, NULL, text, handler->data, user); 263 return treeselectfunc(handler->window, item, text, handler->data, user);
251 } 264 }
252 /* Set Focus event */ 265 /* Set Focus event */
253 case 13: 266 case 13:
254 { 267 {
255 int (* API setfocusfunc)(HWND, void *) = (int (* API)(HWND, void *))handler->signalfunction; 268 int (* API setfocusfunc)(HWND, void *) = (int (* API)(HWND, void *))handler->signalfunction;
256 269
1046 -(int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item; 1059 -(int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item;
1047 -(id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item; 1060 -(id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item;
1048 -(void)addTree:(NSPointerArray *)item and:(NSPointerArray *)parent; 1061 -(void)addTree:(NSPointerArray *)item and:(NSPointerArray *)parent;
1049 -(void *)userdata; 1062 -(void *)userdata;
1050 -(void)setUserdata:(void *)input; 1063 -(void)setUserdata:(void *)input;
1064 -(void)treeSelectionChanged:(id)sender;
1051 -(NSScrollView *)scrollview; 1065 -(NSScrollView *)scrollview;
1052 -(void)setScrollview:(NSScrollView *)input; 1066 -(void)setScrollview:(NSScrollView *)input;
1053 -(void)deleteNode:(NSPointerArray *)item; 1067 -(void)deleteNode:(NSPointerArray *)item;
1054 -(void)clear; 1068 -(void)clear;
1055 @end 1069 @end
1068 [imagecol setWidth:20]; 1082 [imagecol setWidth:20];
1069 [self addTableColumn:imagecol]; 1083 [self addTableColumn:imagecol];
1070 textcol = [[NSTableColumn alloc] init]; 1084 textcol = [[NSTableColumn alloc] init];
1071 [self addTableColumn:textcol]; 1085 [self addTableColumn:textcol];
1072 [self setOutlineTableColumn:textcol]; 1086 [self setOutlineTableColumn:textcol];
1087 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(treeSelectionChanged:) name:NSOutlineViewSelectionDidChangeNotification object:[self window]];
1073 } 1088 }
1074 return self; 1089 return self;
1075 } 1090 }
1076 -(id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item 1091 -(id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item
1077 { 1092 {
1149 } 1164 }
1150 [children addObject:item]; 1165 [children addObject:item];
1151 } 1166 }
1152 -(void *)userdata { return userdata; } 1167 -(void *)userdata { return userdata; }
1153 -(void)setUserdata:(void *)input { userdata = input; } 1168 -(void)setUserdata:(void *)input { userdata = input; }
1169 -(void)treeSelectionChanged:(id)sender
1170 {
1171 /* Handler for container class */
1172 id item = [self itemAtRow:[self selectedRow]];
1173
1174 _event_handler(self, (void *)item, 12);
1175 }
1154 -(NSScrollView *)scrollview { return scrollview; } 1176 -(NSScrollView *)scrollview { return scrollview; }
1155 -(void)setScrollview:(NSScrollView *)input { scrollview = input; } 1177 -(void)setScrollview:(NSScrollView *)input { scrollview = input; }
1156 -(void)deleteNode:(NSPointerArray *)item { _free_tree_recurse(data, item); } 1178 -(void)deleteNode:(NSPointerArray *)item { _free_tree_recurse(data, item); }
1157 -(void)clear { NSMutableArray *toclear = data; data = nil; _free_tree_recurse(toclear, NULL); [self reloadData]; } 1179 -(void)clear { NSMutableArray *toclear = data; data = nil; _free_tree_recurse(toclear, NULL); [self reloadData]; }
1158 -(void)dealloc 1180 -(void)dealloc