changeset 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 f207b7ee177f
files ios/dw.m
diffstat 1 files changed, 16 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- 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
 {