changeset 2427:4f078d24fe83

iOS: Correct _dw_text_handle() behavior. Add UILabel/UITextView to controls for dw_window_g/set_text(). Remove UIWindow since it would crash.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 04 Apr 2021 22:24:13 +0000
parents 6220f0580088
children 9c5b95d66fc8
files ios/dw.m
diffstat 1 files changed, 24 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/ios/dw.m	Sun Apr 04 19:06:23 2021 +0000
+++ b/ios/dw.m	Sun Apr 04 22:24:13 2021 +0000
@@ -3162,18 +3162,23 @@
 /* Return the handle to the text object */
 id _dw_text_handle(id object)
 {
-    if([object isMemberOfClass:[ DWSpinButton class]])
+    if([object isMemberOfClass:[DWButton class]])
+    {
+        DWButton *button = object;
+        object = [button titleLabel];
+    }
+    else if([object isMemberOfClass:[DWSpinButton class]])
     {
         DWSpinButton *spinbutton = object;
         object = [spinbutton textfield];
     }
 #if 0 /* TODO: Fix this when we have a groupbox implemented */
-    if([object isMemberOfClass:[ NSBox class]])
+    if([object isMemberOfClass:[NSBox class]])
     {
         NSBox *box = object;
         id content = [box contentView];
 
-        if([content isMemberOfClass:[ DWText class]])
+        if([content isMemberOfClass:[DWText class]])
         {
             object = content;
         }
@@ -8098,21 +8103,22 @@
     id object = _dw_text_handle(handle);
     char *retval = NULL;
 
-    if([ object isKindOfClass:[ UIWindow class ] ] || [ object isKindOfClass:[ UIButton class ] ])
-    {
-        id window = object;
-        NSString *nsstr = [ window title];
-
-        retval = strdup([ nsstr UTF8String ]);
-    }
-    else if([ object isKindOfClass:[ UIControl class ] ])
+    if([object isKindOfClass:[UILabel class]] || [object isKindOfClass:[UITextField class]])
+    {
+        NSString *nsstr = [object text];
+
+        retval = strdup([nsstr UTF8String]);
+    }
+#ifdef DW_INCLUDE_DEPRECATED
+    else if([object isKindOfClass:[UIControl class]])
     {
         UIControl *control = object;
         NSString *nsstr = [control text];
 
         if(nsstr && [nsstr length] > 0)
-            retval = strdup([ nsstr UTF8String ]);
-    }
+            retval = strdup([nsstr UTF8String]);
+    }
+#endif
     DW_FUNCTION_RETURN_THIS(retval);
 }
 
@@ -8130,13 +8136,15 @@
     DW_FUNCTION_INIT;
     id object = _dw_text_handle(handle);
 
-    if([ object isKindOfClass:[ UIWindow class ] ] || [ object isKindOfClass:[ UIButton class ] ])
-        [object setTitle:[NSString stringWithUTF8String:text]];
-    else if([ object isKindOfClass:[ UIControl class ] ])
+    if([object isKindOfClass:[UILabel class]] || [object isKindOfClass:[UITextField class]])
+        [object setText:[NSString stringWithUTF8String:text]];
+#ifdef DW_INCLUDE_DEPRECATED
+    else if([object isKindOfClass:[UIControl class]])
     {
         UIControl *control = object;
         [control setText:[NSString stringWithUTF8String:text]];
     }
+#endif
     else
         return;
     /* If we changed the text... */