⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 259806 in webkit


Ignore:
Timestamp:
Apr 9, 2020, 10:54:54 AM (6 years ago)
Author:
Megan Gardner
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:]):

Location:
trunk/Source/WebKit
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r259805 r259806  
     12020-04-09  Megan Gardner  <megan_gardner@apple.com>
     2
     3        [iOS] Date and time form controls are presented at the wrong size in some modes
     4        https://bugs.webkit.org/show_bug.cgi?id=210194
     5        <rdar://problem/60385475>
     6
     7        Reviewed by Tim Horton.
     8
     9        Instead of relying on the default size for date/time controls, we should let the
     10        UIDatePicker determine its own size given the configuration we're going to use.
     11
     12        * UIProcess/ios/forms/WKFormInputControl.mm:
     13        (-[WKDateTimePicker initWithView:datePickerMode:]):
     14        (-[WKDateTimePopover initWithView:datePickerMode:]):
     15        * UIProcess/ios/forms/WKFormSelectPopover.mm:
     16        (-[WKSelectPopover initWithView:hasGroups:]):
     17
    1182020-04-08  Simon Fraser  <simon.fraser@apple.com>
    219
  • trunk/Source/WebKit/UIProcess/ios/forms/WKFormInputControl.mm

    r257740 r259806  
    116116    default:
    117117        break;
    118    }
    119 
    120     auto size = currentUserInterfaceIdiomIsPad() ? [UIPickerView defaultSizeForCurrentOrientation] : [UIKeyboard defaultSizeForInterfaceOrientation:view.interfaceOrientation];
    121 
    122     _datePicker = adoptNS([[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)]);
     118    }
     119   
     120    _datePicker = adoptNS([[UIDatePicker alloc] init]);
     121
     122    [_datePicker setDatePickerMode:mode];
     123    [_datePicker setHidden:NO];
     124   
    123125#if HAVE(UIDATEPICKER_STYLE)
    124126    [_datePicker setPreferredDatePickerStyle:[self datePickerStyle]];
    125127#endif
    126     _datePicker.get().datePickerMode = mode;
    127     _datePicker.get().hidden = NO;
     128   
     129    auto size = [_datePicker sizeThatFits:CGSizeMake(view.frame.size.width, 0)];
     130    [_datePicker setFrame:CGRectMake(0, 0, size.width, size.height)];
    128131   
    129132    if ([self shouldPresentGregorianCalendar:view.focusedElementInformation])
     
    340343    _viewController = adoptNS([[WKDateTimePopoverViewController alloc] initWithView:view datePickerMode:mode]);
    341344    UIDatePicker *datePicker = [(WKDateTimePicker *)_viewController.get().innerControl datePicker];
    342     CGFloat popoverWidth = [datePicker _contentWidth];
    343     CGFloat popoverHeight = _viewController.get().view.frame.size.height;
    344     [_viewController setPreferredContentSize:CGSizeMake(popoverWidth, popoverHeight)];
     345
     346    if (view.focusedElementInformation.elementType == InputType::Month) {
     347        CGFloat popoverWidth = [datePicker _contentWidth];
     348        CGFloat popoverHeight = _viewController.get().view.frame.size.height;
     349        [_viewController setPreferredContentSize:CGSizeMake(popoverWidth, popoverHeight)];
     350    } else
     351        [_viewController setPreferredContentSize:datePicker.frame.size];
     352   
    345353    [_viewController setEdgesForExtendedLayout:UIRectEdgeNone];
    346354    [_viewController setTitle:_view.focusedElementInformation.title];
  • trunk/Source/WebKit/UIProcess/ios/forms/WKFormSelectPopover.mm

    r250345 r259806  
    399399    if (!(self = [super initWithView:view]))
    400400        return nil;
    401    
    402     CGRect frame;
    403     frame.origin = CGPointZero;
    404     frame.size = [UIKeyboard defaultSizeForInterfaceOrientation:view.interfaceOrientation];
    405401
    406402    _tableViewController = adoptNS([[WKSelectTableViewController alloc] initWithView:view hasGroups:hasGroups]);
Note: See TracChangeset for help on using the changeset viewer.