Title: [259806] trunk/Source/WebKit
Revision
259806
Author
megan_gard...@apple.com
Date
2020-04-09 10:54:54 -0700 (Thu, 09 Apr 2020)

Log Message

[iOS] Date and time form controls are presented at the wrong size in some modes
https://bugs.webkit.org/show_bug.cgi?id=210194
<rdar://problem/60385475>

Reviewed by Tim Horton.

Instead of relying on the default size for date/time controls, we should let the
UIDatePicker determine its own size given the configuration we're going to use.

* UIProcess/ios/forms/WKFormInputControl.mm:
(-[WKDateTimePicker initWithView:datePickerMode:]):
(-[WKDateTimePopover initWithView:datePickerMode:]):
* UIProcess/ios/forms/WKFormSelectPopover.mm:
(-[WKSelectPopover initWithView:hasGroups:]):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (259805 => 259806)


--- trunk/Source/WebKit/ChangeLog	2020-04-09 16:25:08 UTC (rev 259805)
+++ trunk/Source/WebKit/ChangeLog	2020-04-09 17:54:54 UTC (rev 259806)
@@ -1,3 +1,20 @@
+2020-04-09  Megan Gardner  <megan_gard...@apple.com>
+
+        [iOS] Date and time form controls are presented at the wrong size in some modes
+        https://bugs.webkit.org/show_bug.cgi?id=210194
+        <rdar://problem/60385475>
+
+        Reviewed by Tim Horton.
+
+        Instead of relying on the default size for date/time controls, we should let the
+        UIDatePicker determine its own size given the configuration we're going to use.
+
+        * UIProcess/ios/forms/WKFormInputControl.mm:
+        (-[WKDateTimePicker initWithView:datePickerMode:]):
+        (-[WKDateTimePopover initWithView:datePickerMode:]):
+        * UIProcess/ios/forms/WKFormSelectPopover.mm:
+        (-[WKSelectPopover initWithView:hasGroups:]):
+
 2020-04-08  Simon Fraser  <simon.fra...@apple.com>
 
         [Async overflow scroll] Horizontal scrolls can trigger unwanted back swipes

Modified: trunk/Source/WebKit/UIProcess/ios/forms/WKFormInputControl.mm (259805 => 259806)


--- trunk/Source/WebKit/UIProcess/ios/forms/WKFormInputControl.mm	2020-04-09 16:25:08 UTC (rev 259805)
+++ trunk/Source/WebKit/UIProcess/ios/forms/WKFormInputControl.mm	2020-04-09 17:54:54 UTC (rev 259806)
@@ -115,17 +115,20 @@
         break;
     default:
         break;
-   }
+    }
+    
+    _datePicker = adoptNS([[UIDatePicker alloc] init]);
 
-    auto size = currentUserInterfaceIdiomIsPad() ? [UIPickerView defaultSizeForCurrentOrientation] : [UIKeyboard defaultSizeForInterfaceOrientation:view.interfaceOrientation];
-
-    _datePicker = adoptNS([[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)]);
+    [_datePicker setDatePickerMode:mode];
+    [_datePicker setHidden:NO];
+    
 #if HAVE(UIDATEPICKER_STYLE)
     [_datePicker setPreferredDatePickerStyle:[self datePickerStyle]];
 #endif
-    _datePicker.get().datePickerMode = mode;
-    _datePicker.get().hidden = NO;
     
+    auto size = [_datePicker sizeThatFits:CGSizeMake(view.frame.size.width, 0)];
+    [_datePicker setFrame:CGRectMake(0, 0, size.width, size.height)];
+    
     if ([self shouldPresentGregorianCalendar:view.focusedElementInformation])
         _datePicker.get().calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
     
@@ -339,9 +342,14 @@
     _view = view;
     _viewController = adoptNS([[WKDateTimePopoverViewController alloc] initWithView:view datePickerMode:mode]);
     UIDatePicker *datePicker = [(WKDateTimePicker *)_viewController.get().innerControl datePicker];
-    CGFloat popoverWidth = [datePicker _contentWidth];
-    CGFloat popoverHeight = _viewController.get().view.frame.size.height;
-    [_viewController setPreferredContentSize:CGSizeMake(popoverWidth, popoverHeight)];
+
+    if (view.focusedElementInformation.elementType == InputType::Month) {
+        CGFloat popoverWidth = [datePicker _contentWidth];
+        CGFloat popoverHeight = _viewController.get().view.frame.size.height;
+        [_viewController setPreferredContentSize:CGSizeMake(popoverWidth, popoverHeight)];
+    } else
+        [_viewController setPreferredContentSize:datePicker.frame.size];
+    
     [_viewController setEdgesForExtendedLayout:UIRectEdgeNone];
     [_viewController setTitle:_view.focusedElementInformation.title];
 

Modified: trunk/Source/WebKit/UIProcess/ios/forms/WKFormSelectPopover.mm (259805 => 259806)


--- trunk/Source/WebKit/UIProcess/ios/forms/WKFormSelectPopover.mm	2020-04-09 16:25:08 UTC (rev 259805)
+++ trunk/Source/WebKit/UIProcess/ios/forms/WKFormSelectPopover.mm	2020-04-09 17:54:54 UTC (rev 259806)
@@ -398,10 +398,6 @@
 {
     if (!(self = [super initWithView:view]))
         return nil;
-    
-    CGRect frame;
-    frame.origin = CGPointZero;
-    frame.size = [UIKeyboard defaultSizeForInterfaceOrientation:view.interfaceOrientation];
 
     _tableViewController = adoptNS([[WKSelectTableViewController alloc] initWithView:view hasGroups:hasGroups]);
     [_tableViewController setPopover:self];
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to