changeset 2680:1888d0a08365

iOS: Move the check/radio type alignment changes into setType: method. Also using setState: causes side effects, rename method setCheckState:
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 25 Oct 2021 03:41:02 +0000
parents fd223faa7690
children c1482518b643
files ios/dw.m
diffstat 1 files changed, 19 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/ios/dw.m	Sun Oct 24 23:14:37 2021 +0000
+++ b/ios/dw.m	Mon Oct 25 03:41:02 2021 +0000
@@ -1469,7 +1469,7 @@
 {
     void *userdata;
     DWBox *parent;
-    int type, state;
+    int type, checkstate;
 }
 -(void *)userdata;
 -(void)setUserdata:(void *)input;
@@ -1479,7 +1479,7 @@
 -(int)type;
 -(void)setType:(int)input;
 -(int)state;
--(void)setState:(int)input;
+-(void)setCheckState:(int)input;
 @end
 
 @implementation DWButton
@@ -1489,9 +1489,9 @@
 {
     /* Toggle the button */
     if(type == _DW_BUTTON_TYPE_CHECK)
-        [self setState:(state ? FALSE : TRUE)];
+        [self setCheckState:(checkstate ? FALSE : TRUE)];
     else if(type == _DW_BUTTON_TYPE_RADIO)
-        [self setState:TRUE];
+        [self setCheckState:TRUE];
 
     _dw_event_handler(self, nil, _DW_EVENT_CLICKED);
 
@@ -1514,7 +1514,7 @@
 
                     if(button != self && [button type] == _DW_BUTTON_TYPE_RADIO)
                     {
-                        [button setState:FALSE];
+                        [button setCheckState:FALSE];
                     }
                 }
             }
@@ -1524,7 +1524,15 @@
 -(void)setParent:(DWBox *)input { parent = input; }
 -(DWBox *)parent { return parent; }
 -(int)type { return type; }
--(void)setType:(int)input { type = input; [self updateImage]; }
+-(void)setType:(int)input
+{
+    type = input;
+    if(type == _DW_BUTTON_TYPE_NORMAL)
+        [self setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
+    else
+        [self setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
+    [self updateImage];
+}
 -(void)updateImage
 {
     NSString *imagename = nil;
@@ -1534,24 +1542,20 @@
         case _DW_BUTTON_TYPE_CHECK:
         {
 
-            if(state)
+            if(checkstate)
                 imagename = @"checkmark.square";
             else
                 imagename = @"square";
-            [self setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
         }
         break;
         case _DW_BUTTON_TYPE_RADIO:
         {
-            if(state)
+            if(checkstate)
                 imagename = @"largecircle.fill.circle";
             else
                 imagename = @"circle";
-            [self setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
         }
         break;
-        default:
-            [self setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
     }
     if(imagename)
     {
@@ -1561,8 +1565,8 @@
         [self setTitleEdgeInsets:UIEdgeInsetsMake(0,size.width,0,0)];
     }
 }
--(int)state { return state; }
--(void)setState:(int)input { state = input; [self updateImage]; }
+-(int)checkState { return checkstate; }
+-(void)setCheckState:(int)input { checkstate = input; [self updateImage]; }
 -(void)dealloc { UserData *root = userdata; _dw_remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
 @end
 
@@ -4667,7 +4671,7 @@
 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, value, int)
 {
     DWButton *button = handle;
-    [button setState:value];
+    [button setCheckState:value];
     DW_FUNCTION_RETURN_NOTHING;
 }