comparison ios/dw.m @ 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
comparison
equal deleted inserted replaced
2426:6220f0580088 2427:4f078d24fe83
3160 } 3160 }
3161 3161
3162 /* Return the handle to the text object */ 3162 /* Return the handle to the text object */
3163 id _dw_text_handle(id object) 3163 id _dw_text_handle(id object)
3164 { 3164 {
3165 if([object isMemberOfClass:[ DWSpinButton class]]) 3165 if([object isMemberOfClass:[DWButton class]])
3166 {
3167 DWButton *button = object;
3168 object = [button titleLabel];
3169 }
3170 else if([object isMemberOfClass:[DWSpinButton class]])
3166 { 3171 {
3167 DWSpinButton *spinbutton = object; 3172 DWSpinButton *spinbutton = object;
3168 object = [spinbutton textfield]; 3173 object = [spinbutton textfield];
3169 } 3174 }
3170 #if 0 /* TODO: Fix this when we have a groupbox implemented */ 3175 #if 0 /* TODO: Fix this when we have a groupbox implemented */
3171 if([object isMemberOfClass:[ NSBox class]]) 3176 if([object isMemberOfClass:[NSBox class]])
3172 { 3177 {
3173 NSBox *box = object; 3178 NSBox *box = object;
3174 id content = [box contentView]; 3179 id content = [box contentView];
3175 3180
3176 if([content isMemberOfClass:[ DWText class]]) 3181 if([content isMemberOfClass:[DWText class]])
3177 { 3182 {
3178 object = content; 3183 object = content;
3179 } 3184 }
3180 } 3185 }
3181 #endif 3186 #endif
8096 { 8101 {
8097 DW_FUNCTION_INIT; 8102 DW_FUNCTION_INIT;
8098 id object = _dw_text_handle(handle); 8103 id object = _dw_text_handle(handle);
8099 char *retval = NULL; 8104 char *retval = NULL;
8100 8105
8101 if([ object isKindOfClass:[ UIWindow class ] ] || [ object isKindOfClass:[ UIButton class ] ]) 8106 if([object isKindOfClass:[UILabel class]] || [object isKindOfClass:[UITextField class]])
8102 { 8107 {
8103 id window = object; 8108 NSString *nsstr = [object text];
8104 NSString *nsstr = [ window title]; 8109
8105 8110 retval = strdup([nsstr UTF8String]);
8106 retval = strdup([ nsstr UTF8String ]); 8111 }
8107 } 8112 #ifdef DW_INCLUDE_DEPRECATED
8108 else if([ object isKindOfClass:[ UIControl class ] ]) 8113 else if([object isKindOfClass:[UIControl class]])
8109 { 8114 {
8110 UIControl *control = object; 8115 UIControl *control = object;
8111 NSString *nsstr = [control text]; 8116 NSString *nsstr = [control text];
8112 8117
8113 if(nsstr && [nsstr length] > 0) 8118 if(nsstr && [nsstr length] > 0)
8114 retval = strdup([ nsstr UTF8String ]); 8119 retval = strdup([nsstr UTF8String]);
8115 } 8120 }
8121 #endif
8116 DW_FUNCTION_RETURN_THIS(retval); 8122 DW_FUNCTION_RETURN_THIS(retval);
8117 } 8123 }
8118 8124
8119 /* 8125 /*
8120 * Sets the text used for a given window. 8126 * Sets the text used for a given window.
8128 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, text, char *) 8134 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, text, char *)
8129 { 8135 {
8130 DW_FUNCTION_INIT; 8136 DW_FUNCTION_INIT;
8131 id object = _dw_text_handle(handle); 8137 id object = _dw_text_handle(handle);
8132 8138
8133 if([ object isKindOfClass:[ UIWindow class ] ] || [ object isKindOfClass:[ UIButton class ] ]) 8139 if([object isKindOfClass:[UILabel class]] || [object isKindOfClass:[UITextField class]])
8134 [object setTitle:[NSString stringWithUTF8String:text]]; 8140 [object setText:[NSString stringWithUTF8String:text]];
8135 else if([ object isKindOfClass:[ UIControl class ] ]) 8141 #ifdef DW_INCLUDE_DEPRECATED
8142 else if([object isKindOfClass:[UIControl class]])
8136 { 8143 {
8137 UIControl *control = object; 8144 UIControl *control = object;
8138 [control setText:[NSString stringWithUTF8String:text]]; 8145 [control setText:[NSString stringWithUTF8String:text]];
8139 } 8146 }
8147 #endif
8140 else 8148 else
8141 return; 8149 return;
8142 /* If we changed the text... */ 8150 /* If we changed the text... */
8143 Item *item = _dw_box_item(handle); 8151 Item *item = _dw_box_item(handle);
8144 8152