# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1649693520 0 # Node ID af9dc4c2c0df44286a662a8b9a7f00dfa6596cbe # Parent 52f3858035d84644c8b945624371ca9260e4c0c6 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. diff -r 52f3858035d8 -r af9dc4c2c0df ios/dw.m --- a/ios/dw.m Mon Apr 11 15:41:47 2022 +0000 +++ b/ios/dw.m Mon Apr 11 16:12:00 2022 +0000 @@ -567,25 +567,16 @@ if([object isKindOfClass:[UITableView class]] && event) { - /* Event will be NSPointerArray for Containers */ + if([event isKindOfClass:[NSPointerArray class]]) { + /* The NSPointerArray count will be 2 for Containers */ text = [event pointerAtIndex:0]; user = [event pointerAtIndex:1]; - } - else - { - /* Event should be DWTreeItem for Trees */ - const char *title = [[item title] UTF8String]; - int retval; - - text = strdup(title ? title : ""); - user = [item data]; - item = event; - - retval = treeselectfunc(handler->window, item, text, handler->data, user); - free(text); - return retval; + + /* The NSPointerArray count will be 3 for Trees */ + if([event count] > 2) + item = [event pointerAtIndex:2]; } } @@ -3005,7 +2996,16 @@ -(void)treeView:(DWTree *)treeView didSelectForTreeItem:(DWTreeItem *)treeItem { if(treeItem) - _dw_event_handler(treeView, (void *)treeItem, _DW_EVENT_ITEM_SELECT); + { + const char *title = [[treeItem title] UTF8String]; + NSPointerArray *params = [NSPointerArray pointerArrayWithOptions:NSPointerFunctionsOpaqueMemory]; + + [params addPointer:strdup(title ? title : "")]; + [params addPointer:[treeItem data]]; + [params addPointer:treeItem]; + _dw_event_handler(treeView, params, _DW_EVENT_ITEM_SELECT); + free([params pointerAtIndex:0]); + } } -(UIContextMenuConfiguration *)treeView:(DWTree *)treeView contextMenuConfigurationForTreeItem:(DWTreeItem *)treeItem point:(CGPoint)point {