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

Changeset 176511 in webkit


Ignore:
Timestamp:
Nov 23, 2014, 9:21:13 PM (12 years ago)
Author:
Conrad Shultz
Message:

Page previews should have titles
https://bugs.webkit.org/show_bug.cgi?id=139020

Reviewed by Tim Horton.

  • UIProcess/API/Cocoa/WKViewPrivate.h:

Declare -_titleForPreviewOfURL:.

  • UIProcess/API/mac/WKView.mm:

(-[WKView _titleForPreviewOfURL:]):
Stub implementation.

  • UIProcess/mac/WKActionMenuController.mm:

(+[WKPagePreviewViewController previewPadding]):
Account for the title height.
(-[WKPagePreviewViewController loadView]):
Set correct autoresize masks on some views; create and configure a title view that is
horizontally and vertically centered.
(-[WKActionMenuController pagePreviewViewController:titleForPreviewOfURL:]):
WKPagePreviewViewControllerDelegate method; wrap -[WKView _titleForPreviewOfURL:].

Location:
trunk/Source/WebKit2
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r176509 r176511  
     12014-11-23  Conrad Shultz  <conrad_shultz@apple.com>
     2
     3        Page previews should have titles
     4        https://bugs.webkit.org/show_bug.cgi?id=139020
     5
     6        Reviewed by Tim Horton.
     7
     8        * UIProcess/API/Cocoa/WKViewPrivate.h:
     9        Declare -_titleForPreviewOfURL:.
     10
     11        * UIProcess/API/mac/WKView.mm:
     12        (-[WKView _titleForPreviewOfURL:]):
     13        Stub implementation.
     14
     15        * UIProcess/mac/WKActionMenuController.mm:
     16        (+[WKPagePreviewViewController previewPadding]):
     17        Account for the title height.
     18        (-[WKPagePreviewViewController loadView]):
     19        Set correct autoresize masks on some views; create and configure a title view that is
     20        horizontally and vertically centered.
     21        (-[WKActionMenuController pagePreviewViewController:titleForPreviewOfURL:]):
     22        WKPagePreviewViewControllerDelegate method; wrap -[WKView _titleForPreviewOfURL:].
     23
    1242014-11-22  Simon Fraser  <simon.fraser@apple.com>
    225
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h

    r176427 r176511  
    124124
    125125- (NSView *)_viewForPreviewingURL:(NSURL *)url initialFrameSize:(NSSize)initialFrameSize;
     126- (NSString *)_titleForPreviewOfURL:(NSURL *)url;
    126127- (void)_finishPreviewingURL:(NSURL *)url withPreviewView:(NSView *)previewView;
    127128- (void)_handleClickInPreviewView:(NSView *)previewView URL:(NSURL *)url;
  • trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm

    r176486 r176511  
    42204220}
    42214221
     4222- (NSString *)_titleForPreviewOfURL:(NSURL *)url
     4223{
     4224    return nil;
     4225}
     4226
    42224227- (void)_finishPreviewingURL:(NSURL *)url withPreviewView:(NSView *)previewView
    42234228{
  • trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm

    r176485 r176511  
    7373
    7474static const CGFloat previewViewInset = 3;
     75static const CGFloat previewViewTitleHeight = 34;
    7576
    7677@class WKPagePreviewViewController;
     
    7879@protocol WKPagePreviewViewControllerDelegate <NSObject>
    7980- (NSView *)pagePreviewViewController:(WKPagePreviewViewController *)pagePreviewViewController viewForPreviewingURL:(NSURL *)url initialFrameSize:(NSSize)initialFrameSize;
     81- (NSString *)pagePreviewViewController:(WKPagePreviewViewController *)pagePreviewViewController titleForPreviewOfURL:(NSURL *)url;
    8082- (void)pagePreviewViewControllerWasClicked:(WKPagePreviewViewController *)pagePreviewViewController;
    8183@end
     
    112114+ (NSSize)previewPadding
    113115{
    114     return NSMakeSize(2 * previewViewInset, 2 * previewViewInset);
     116    return NSMakeSize(2 * previewViewInset, previewViewTitleHeight + 2 * previewViewInset);
    115117}
    116118
     
    134136    NSRect previewFrame = [_previewView frame];
    135137    NSRect containerFrame = previewFrame;
    136     containerFrame.size.width += 2 * previewViewInset;
    137     containerFrame.size.height += 2 * previewViewInset;
     138    NSSize totalPadding = [[self class] previewPadding];
     139    containerFrame.size.width += totalPadding.width;
     140    containerFrame.size.height += totalPadding.height;
    138141    previewFrame = NSOffsetRect(previewFrame, previewViewInset, previewViewInset);
    139142
    140143    RetainPtr<NSView> containerView = adoptNS([[NSView alloc] initWithFrame:containerFrame]);
     144    [containerView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
    141145    [containerView addSubview:_previewView.get()];
    142146    [_previewView setFrame:previewFrame];
     147    [_previewView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
     148
     149    RetainPtr<NSTextField> titleTextField = adoptNS([[NSTextField alloc] init]);
     150    [titleTextField setWantsLayer:YES];
     151    [titleTextField setAutoresizingMask:NSViewWidthSizable | NSViewMinYMargin];
     152    [titleTextField setEditable:NO];
     153    [titleTextField setBezeled:NO];
     154    [titleTextField setDrawsBackground:NO];
     155    [titleTextField setAlignment:NSCenterTextAlignment];
     156    [titleTextField setUsesSingleLineMode:YES];
     157    [titleTextField setLineBreakMode:NSLineBreakByTruncatingTail];
     158    [titleTextField setTextColor:[NSColor labelColor]];
     159
     160    NSString *title = [_delegate pagePreviewViewController:self titleForPreviewOfURL:_url.get()];
     161    if (!title)
     162        title = [_url absoluteString];
     163
     164    [titleTextField setStringValue:title ? title : @""];
     165
     166    [titleTextField sizeToFit];
     167    NSSize titleFittingSize = [titleTextField frame].size;
     168    CGFloat textFieldCenteringOffset = (NSMaxY(containerFrame) - NSMaxY(previewFrame) - titleFittingSize.height) / 2;
     169
     170    NSRect titleFrame = previewFrame;
     171    titleFrame.size.height = titleFittingSize.height;
     172    titleFrame.origin.y = NSMaxY(previewFrame) + textFieldCenteringOffset;
     173    [titleTextField setFrame:titleFrame];
     174    [containerView addSubview:titleTextField.get()];
    143175
    144176    // Setting the webView bounds will scale it to 75% of the _mainViewSize.
     
    10881120}
    10891121
     1122- (NSString *)pagePreviewViewController:(WKPagePreviewViewController *)pagePreviewViewController titleForPreviewOfURL:(NSURL *)url
     1123{
     1124    return [_wkView _titleForPreviewOfURL:url];
     1125}
     1126
    10901127- (void)pagePreviewViewControllerWasClicked:(WKPagePreviewViewController *)pagePreviewViewController
    10911128{
Note: See TracChangeset for help on using the changeset viewer.