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