Mercurial > dwindows
comparison ios/dw.m @ 2772:af9dc4c2c0df
iOS: Use NSPointerArray in all _DW_EVENT_ITEM_SELECT cases.
Just add the HTREEITEM as the third member for trees.
This fixes an issue were the text or data was sometimes reported NULL.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Mon, 11 Apr 2022 16:12:00 +0000 |
parents | 52f3858035d8 |
children | 3934ac8b394c |
comparison
equal
deleted
inserted
replaced
2771:52f3858035d8 | 2772:af9dc4c2c0df |
---|---|
565 void *user = NULL; | 565 void *user = NULL; |
566 id item = nil; | 566 id item = nil; |
567 | 567 |
568 if([object isKindOfClass:[UITableView class]] && event) | 568 if([object isKindOfClass:[UITableView class]] && event) |
569 { | 569 { |
570 /* Event will be NSPointerArray for Containers */ | 570 |
571 if([event isKindOfClass:[NSPointerArray class]]) | 571 if([event isKindOfClass:[NSPointerArray class]]) |
572 { | 572 { |
573 /* The NSPointerArray count will be 2 for Containers */ | |
573 text = [event pointerAtIndex:0]; | 574 text = [event pointerAtIndex:0]; |
574 user = [event pointerAtIndex:1]; | 575 user = [event pointerAtIndex:1]; |
575 } | 576 |
576 else | 577 /* The NSPointerArray count will be 3 for Trees */ |
577 { | 578 if([event count] > 2) |
578 /* Event should be DWTreeItem for Trees */ | 579 item = [event pointerAtIndex:2]; |
579 const char *title = [[item title] UTF8String]; | |
580 int retval; | |
581 | |
582 text = strdup(title ? title : ""); | |
583 user = [item data]; | |
584 item = event; | |
585 | |
586 retval = treeselectfunc(handler->window, item, text, handler->data, user); | |
587 free(text); | |
588 return retval; | |
589 } | 580 } |
590 } | 581 } |
591 | 582 |
592 return treeselectfunc(handler->window, item, text, handler->data, user); | 583 return treeselectfunc(handler->window, item, text, handler->data, user); |
593 } | 584 } |
3003 -(NSInteger)numberOfRowsInTreeView:(DWTree *)treeView { return [_rootNode visibleNodes].count; } | 2994 -(NSInteger)numberOfRowsInTreeView:(DWTree *)treeView { return [_rootNode visibleNodes].count; } |
3004 -(void)treeView:(DWTree *)treeView addTreeItem:(DWTreeItem *)treeItem {} | 2995 -(void)treeView:(DWTree *)treeView addTreeItem:(DWTreeItem *)treeItem {} |
3005 -(void)treeView:(DWTree *)treeView didSelectForTreeItem:(DWTreeItem *)treeItem | 2996 -(void)treeView:(DWTree *)treeView didSelectForTreeItem:(DWTreeItem *)treeItem |
3006 { | 2997 { |
3007 if(treeItem) | 2998 if(treeItem) |
3008 _dw_event_handler(treeView, (void *)treeItem, _DW_EVENT_ITEM_SELECT); | 2999 { |
3000 const char *title = [[treeItem title] UTF8String]; | |
3001 NSPointerArray *params = [NSPointerArray pointerArrayWithOptions:NSPointerFunctionsOpaqueMemory]; | |
3002 | |
3003 [params addPointer:strdup(title ? title : "")]; | |
3004 [params addPointer:[treeItem data]]; | |
3005 [params addPointer:treeItem]; | |
3006 _dw_event_handler(treeView, params, _DW_EVENT_ITEM_SELECT); | |
3007 free([params pointerAtIndex:0]); | |
3008 } | |
3009 } | 3009 } |
3010 -(UIContextMenuConfiguration *)treeView:(DWTree *)treeView contextMenuConfigurationForTreeItem:(DWTreeItem *)treeItem point:(CGPoint)point | 3010 -(UIContextMenuConfiguration *)treeView:(DWTree *)treeView contextMenuConfigurationForTreeItem:(DWTreeItem *)treeItem point:(CGPoint)point |
3011 { | 3011 { |
3012 UIContextMenuConfiguration *config = nil; | 3012 UIContextMenuConfiguration *config = nil; |
3013 DWWindow *window = (DWWindow *)[self window]; | 3013 DWWindow *window = (DWWindow *)[self window]; |