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];