Title: [176511] trunk/Source/WebKit2
- Revision
- 176511
- Author
- [email protected]
- Date
- 2014-11-23 21:21:13 -0800 (Sun, 23 Nov 2014)
Log 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:].
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (176510 => 176511)
--- trunk/Source/WebKit2/ChangeLog 2014-11-23 18:46:18 UTC (rev 176510)
+++ trunk/Source/WebKit2/ChangeLog 2014-11-24 05:21:13 UTC (rev 176511)
@@ -1,3 +1,26 @@
+2014-11-23 Conrad Shultz <[email protected]>
+
+ 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:].
+
2014-11-22 Simon Fraser <[email protected]>
Extend WKRenderObject and WKRenderLayer with some more useful data
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h (176510 => 176511)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h 2014-11-23 18:46:18 UTC (rev 176510)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h 2014-11-24 05:21:13 UTC (rev 176511)
@@ -123,6 +123,7 @@
- (NSArray *)_actionMenuItemsForHitTestResult:(WKHitTestResultRef)hitTestResult withType:(_WKActionMenuType)type defaultActionMenuItems:(NSArray *)defaultMenuItems userData:(WKTypeRef)userData;
- (NSView *)_viewForPreviewingURL:(NSURL *)url initialFrameSize:(NSSize)initialFrameSize;
+- (NSString *)_titleForPreviewOfURL:(NSURL *)url;
- (void)_finishPreviewingURL:(NSURL *)url withPreviewView:(NSView *)previewView;
- (void)_handleClickInPreviewView:(NSView *)previewView URL:(NSURL *)url;
Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm (176510 => 176511)
--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm 2014-11-23 18:46:18 UTC (rev 176510)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm 2014-11-24 05:21:13 UTC (rev 176511)
@@ -4219,6 +4219,11 @@
return nil;
}
+- (NSString *)_titleForPreviewOfURL:(NSURL *)url
+{
+ return nil;
+}
+
- (void)_finishPreviewingURL:(NSURL *)url withPreviewView:(NSView *)previewView
{
}
Modified: trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm (176510 => 176511)
--- trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm 2014-11-23 18:46:18 UTC (rev 176510)
+++ trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm 2014-11-24 05:21:13 UTC (rev 176511)
@@ -72,11 +72,13 @@
#if WK_API_ENABLED
static const CGFloat previewViewInset = 3;
+static const CGFloat previewViewTitleHeight = 34;
@class WKPagePreviewViewController;
@protocol WKPagePreviewViewControllerDelegate <NSObject>
- (NSView *)pagePreviewViewController:(WKPagePreviewViewController *)pagePreviewViewController viewForPreviewingURL:(NSURL *)url initialFrameSize:(NSSize)initialFrameSize;
+- (NSString *)pagePreviewViewController:(WKPagePreviewViewController *)pagePreviewViewController titleForPreviewOfURL:(NSURL *)url;
- (void)pagePreviewViewControllerWasClicked:(WKPagePreviewViewController *)pagePreviewViewController;
@end
@@ -111,7 +113,7 @@
+ (NSSize)previewPadding
{
- return NSMakeSize(2 * previewViewInset, 2 * previewViewInset);
+ return NSMakeSize(2 * previewViewInset, previewViewTitleHeight + 2 * previewViewInset);
}
- (void)loadView
@@ -133,14 +135,44 @@
NSRect previewFrame = [_previewView frame];
NSRect containerFrame = previewFrame;
- containerFrame.size.width += 2 * previewViewInset;
- containerFrame.size.height += 2 * previewViewInset;
+ NSSize totalPadding = [[self class] previewPadding];
+ containerFrame.size.width += totalPadding.width;
+ containerFrame.size.height += totalPadding.height;
previewFrame = NSOffsetRect(previewFrame, previewViewInset, previewViewInset);
RetainPtr<NSView> containerView = adoptNS([[NSView alloc] initWithFrame:containerFrame]);
+ [containerView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
[containerView addSubview:_previewView.get()];
[_previewView setFrame:previewFrame];
+ [_previewView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
+ RetainPtr<NSTextField> titleTextField = adoptNS([[NSTextField alloc] init]);
+ [titleTextField setWantsLayer:YES];
+ [titleTextField setAutoresizingMask:NSViewWidthSizable | NSViewMinYMargin];
+ [titleTextField setEditable:NO];
+ [titleTextField setBezeled:NO];
+ [titleTextField setDrawsBackground:NO];
+ [titleTextField setAlignment:NSCenterTextAlignment];
+ [titleTextField setUsesSingleLineMode:YES];
+ [titleTextField setLineBreakMode:NSLineBreakByTruncatingTail];
+ [titleTextField setTextColor:[NSColor labelColor]];
+
+ NSString *title = [_delegate pagePreviewViewController:self titleForPreviewOfURL:_url.get()];
+ if (!title)
+ title = [_url absoluteString];
+
+ [titleTextField setStringValue:title ? title : @""];
+
+ [titleTextField sizeToFit];
+ NSSize titleFittingSize = [titleTextField frame].size;
+ CGFloat textFieldCenteringOffset = (NSMaxY(containerFrame) - NSMaxY(previewFrame) - titleFittingSize.height) / 2;
+
+ NSRect titleFrame = previewFrame;
+ titleFrame.size.height = titleFittingSize.height;
+ titleFrame.origin.y = NSMaxY(previewFrame) + textFieldCenteringOffset;
+ [titleTextField setFrame:titleFrame];
+ [containerView addSubview:titleTextField.get()];
+
// Setting the webView bounds will scale it to 75% of the _mainViewSize.
[_previewView setBounds:NSMakeRect(0, 0, _mainViewSize.width / _popoverToViewScale, _mainViewSize.height / _popoverToViewScale)];
@@ -1087,6 +1119,11 @@
return [_wkView _viewForPreviewingURL:url initialFrameSize:initialFrameSize];
}
+- (NSString *)pagePreviewViewController:(WKPagePreviewViewController *)pagePreviewViewController titleForPreviewOfURL:(NSURL *)url
+{
+ return [_wkView _titleForPreviewOfURL:url];
+}
+
- (void)pagePreviewViewControllerWasClicked:(WKPagePreviewViewController *)pagePreviewViewController
{
if (NSURL *url = ""
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes