Title: [176613] trunk/Source/WebKit2
- Revision
- 176613
- Author
- [email protected]
- Date
- 2014-12-01 16:49:49 -0800 (Mon, 01 Dec 2014)
Log Message
Clients need a way to explicitly set the title of a page preview
https://bugs.webkit.org/show_bug.cgi?id=139161
Reviewed by Beth Dakin.
This implicitly assumes that only one page preview can be associate with a given WKView at a time.
* UIProcess/API/Cocoa/WKViewPrivate.h:
* UIProcess/API/mac/WKView.mm:
(-[WKView _setPreviewTitle:]):
Wrap -[WKActionMenuController setPreviewTitle:]
* UIProcess/mac/WKActionMenuController.h:
* UIProcess/mac/WKActionMenuController.mm:
Add ivars for the title and the title text field (previously not independently exposed).
(-[WKPagePreviewViewController previewTitle]):
Accessor.
(-[WKPagePreviewViewController setPreviewTitle:]):
Accessor; set the text field's string value.
(-[WKPagePreviewViewController loadView]):
Adopt the _titleTextField ivar; assume that if a client has explicitly set the previewTitle then we don't
need to ask for it again.
(-[WKActionMenuController setPreviewTitle:]):
Wrap -[WKPagePreviewViewController setPreviewTitle:].
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (176612 => 176613)
--- trunk/Source/WebKit2/ChangeLog 2014-12-02 00:18:33 UTC (rev 176612)
+++ trunk/Source/WebKit2/ChangeLog 2014-12-02 00:49:49 UTC (rev 176613)
@@ -1,3 +1,30 @@
+2014-12-01 Conrad Shultz <[email protected]>
+
+ Clients need a way to explicitly set the title of a page preview
+ https://bugs.webkit.org/show_bug.cgi?id=139161
+
+ Reviewed by Beth Dakin.
+
+ This implicitly assumes that only one page preview can be associate with a given WKView at a time.
+
+ * UIProcess/API/Cocoa/WKViewPrivate.h:
+ * UIProcess/API/mac/WKView.mm:
+ (-[WKView _setPreviewTitle:]):
+ Wrap -[WKActionMenuController setPreviewTitle:]
+
+ * UIProcess/mac/WKActionMenuController.h:
+ * UIProcess/mac/WKActionMenuController.mm:
+ Add ivars for the title and the title text field (previously not independently exposed).
+ (-[WKPagePreviewViewController previewTitle]):
+ Accessor.
+ (-[WKPagePreviewViewController setPreviewTitle:]):
+ Accessor; set the text field's string value.
+ (-[WKPagePreviewViewController loadView]):
+ Adopt the _titleTextField ivar; assume that if a client has explicitly set the previewTitle then we don't
+ need to ask for it again.
+ (-[WKActionMenuController setPreviewTitle:]):
+ Wrap -[WKPagePreviewViewController setPreviewTitle:].
+
2014-12-01 Anders Carlsson <[email protected]>
Make WebKit2 work slightly better with garbage collection
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h (176612 => 176613)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h 2014-12-02 00:18:33 UTC (rev 176612)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h 2014-12-02 00:49:49 UTC (rev 176613)
@@ -124,6 +124,7 @@
- (NSView *)_viewForPreviewingURL:(NSURL *)url initialFrameSize:(NSSize)initialFrameSize;
- (NSString *)_titleForPreviewOfURL:(NSURL *)url;
+- (void)_setPreviewTitle:(NSString *)previewTitle;
- (void)_finishPreviewingURL:(NSURL *)url withPreviewView:(NSView *)previewView;
- (void)_handleClickInPreviewView:(NSView *)previewView URL:(NSURL *)url;
Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm (176612 => 176613)
--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm 2014-12-02 00:18:33 UTC (rev 176612)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm 2014-12-02 00:49:49 UTC (rev 176613)
@@ -4224,6 +4224,13 @@
return nil;
}
+- (void)_setPreviewTitle:(NSString *)previewTitle
+{
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
+ [_data->_actionMenuController setPreviewTitle:previewTitle];
+#endif
+}
+
- (void)_finishPreviewingURL:(NSURL *)url withPreviewView:(NSView *)previewView
{
}
Modified: trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.h (176612 => 176613)
--- trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.h 2014-12-02 00:18:33 UTC (rev 176612)
+++ trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.h 2014-12-02 00:49:49 UTC (rev 176613)
@@ -88,6 +88,7 @@
- (void)didPerformActionMenuHitTest:(const WebKit::ActionMenuHitTestResult&)hitTestResult userData:(API::Object*)userData;
- (void)dismissActionMenuPopovers;
+- (void)setPreviewTitle:(NSString *)previewTitle;
@end
Modified: trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm (176612 => 176613)
--- trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm 2014-12-02 00:18:33 UTC (rev 176612)
+++ trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm 2014-12-02 00:49:49 UTC (rev 176613)
@@ -88,10 +88,14 @@
NSSize _mainViewSize;
RetainPtr<NSURL> _url;
RetainPtr<NSView> _previewView;
+ RetainPtr<NSTextField> _titleTextField;
+ RetainPtr<NSString> _previewTitle;
id <WKPagePreviewViewControllerDelegate> _delegate;
CGFloat _popoverToViewScale;
}
+@property (nonatomic, copy) NSString *previewTitle;
+
- (instancetype)initWithPageURL:(NSURL *)URL mainViewSize:(NSSize)size popoverToViewScale:(CGFloat)scale;
+ (NSSize)previewPadding;
@@ -112,6 +116,21 @@
return self;
}
+- (NSString *)previewTitle
+{
+ return _previewTitle.get();
+}
+
+- (void)setPreviewTitle:(NSString *)previewTitle
+{
+ if ([_previewTitle isEqualToString:previewTitle])
+ return;
+
+ // Keep a separate copy around in case this is received before the view hierarchy is created.
+ _previewTitle = adoptNS([previewTitle copy]);
+ [_titleTextField setStringValue:previewTitle ? previewTitle : @""];
+}
+
+ (NSSize)previewPadding
{
return NSMakeSize(2 * previewViewInset, previewViewTitleHeight + 2 * previewViewInset);
@@ -147,32 +166,34 @@
[_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]];
+ _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()];
+ NSString *title = _previewTitle.get();
if (!title)
+ title = [_delegate pagePreviewViewController:self titleForPreviewOfURL:_url.get()];
+ if (!title)
title = [_url absoluteString];
- [titleTextField setStringValue:title ? title : @""];
+ [_titleTextField setStringValue:title ? title : @""];
- [titleTextField sizeToFit];
- NSSize titleFittingSize = [titleTextField frame].size;
+ [_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()];
+ [_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)];
@@ -333,6 +354,13 @@
[self _clearPreviewPopover];
}
+- (void)setPreviewTitle:(NSString *)previewTitle
+{
+#if WK_API_ENABLED
+ [_previewViewController setPreviewTitle:previewTitle];
+#endif
+}
+
#pragma mark Text Indicator
- (void)_showTextIndicator
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes