Mercurial > dwindows
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 |