summaryrefslogtreecommitdiffstats
path: root/Source/WebKit2/UIProcess/mac/WebPopupMenuProxyMac.mm
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/UIProcess/mac/WebPopupMenuProxyMac.mm')
-rw-r--r--Source/WebKit2/UIProcess/mac/WebPopupMenuProxyMac.mm21
1 files changed, 14 insertions, 7 deletions
diff --git a/Source/WebKit2/UIProcess/mac/WebPopupMenuProxyMac.mm b/Source/WebKit2/UIProcess/mac/WebPopupMenuProxyMac.mm
index 61713fc..7ce8764 100644
--- a/Source/WebKit2/UIProcess/mac/WebPopupMenuProxyMac.mm
+++ b/Source/WebKit2/UIProcess/mac/WebPopupMenuProxyMac.mm
@@ -36,7 +36,7 @@ using namespace WebCore;
namespace WebKit {
-WebPopupMenuProxyMac::WebPopupMenuProxyMac(WKView* webView, WebPopupMenuProxy::Client* client)
+WebPopupMenuProxyMac::WebPopupMenuProxyMac(WKView *webView, WebPopupMenuProxy::Client* client)
: WebPopupMenuProxy(client)
, m_webView(webView)
{
@@ -48,7 +48,7 @@ WebPopupMenuProxyMac::~WebPopupMenuProxyMac()
[m_popup.get() setControlView:nil];
}
-void WebPopupMenuProxyMac::populate(const Vector<WebPopupItem>& items, TextDirection menuTextDirection)
+void WebPopupMenuProxyMac::populate(const Vector<WebPopupItem>& items, NSFont *font, TextDirection menuTextDirection)
{
if (m_popup)
[m_popup.get() removeAllItems];
@@ -73,7 +73,7 @@ void WebPopupMenuProxyMac::populate(const Vector<WebPopupItem>& items, TextDirec
[paragraphStyle.get() setAlignment:menuTextDirection == LTR ? NSLeftTextAlignment : NSRightTextAlignment];
RetainPtr<NSMutableDictionary> attributes(AdoptNS, [[NSMutableDictionary alloc] initWithObjectsAndKeys:
paragraphStyle.get(), NSParagraphStyleAttributeName,
- [m_popup.get() font], NSFontAttributeName,
+ font, NSFontAttributeName,
nil]);
if (items[i].m_hasTextDirectionOverride) {
RetainPtr<NSNumber> writingDirectionValue(AdoptNS, [[NSNumber alloc] initWithInteger:writingDirection + NSTextWritingDirectionOverride]);
@@ -89,15 +89,22 @@ void WebPopupMenuProxyMac::populate(const Vector<WebPopupItem>& items, TextDirec
}
}
-void WebPopupMenuProxyMac::showPopupMenu(const IntRect& rect, TextDirection textDirection, const Vector<WebPopupItem>& items, const PlatformPopupMenuData&, int32_t selectedIndex)
+void WebPopupMenuProxyMac::showPopupMenu(const IntRect& rect, TextDirection textDirection, double scaleFactor, const Vector<WebPopupItem>& items, const PlatformPopupMenuData& data, int32_t selectedIndex)
{
- populate(items, textDirection);
+ NSFont *font;
+ if (data.fontInfo.fontAttributeDictionary) {
+ NSFontDescriptor *fontDescriptor = [NSFontDescriptor fontDescriptorWithFontAttributes:(NSDictionary *)data.fontInfo.fontAttributeDictionary.get()];
+ font = [NSFont fontWithDescriptor:fontDescriptor size:((scaleFactor != 1) ? [fontDescriptor pointSize] * scaleFactor : 0)];
+ } else
+ font = [NSFont menuFontOfSize:0];
+
+ populate(items, font, textDirection);
[m_popup.get() attachPopUpWithFrame:rect inView:m_webView];
[m_popup.get() selectItemAtIndex:selectedIndex];
[m_popup.get() setUserInterfaceLayoutDirection:textDirection == LTR ? NSUserInterfaceLayoutDirectionLeftToRight : NSUserInterfaceLayoutDirectionRightToLeft];
- NSMenu* menu = [m_popup.get() menu];
+ NSMenu *menu = [m_popup.get() menu];
// These values were borrowed from AppKit to match their placement of the menu.
const int popOverHorizontalAdjust = -10;
@@ -111,7 +118,7 @@ void WebPopupMenuProxyMac::showPopupMenu(const IntRect& rect, TextDirection text
[m_webView addSubview:dummyView.get()];
location = [dummyView.get() convertPoint:location fromView:m_webView];
- WKPopupMenu(menu, location, roundf(NSWidth(rect)), dummyView.get(), selectedIndex, [NSFont menuFontOfSize:0]);
+ WKPopupMenu(menu, location, roundf(NSWidth(rect)), dummyView.get(), selectedIndex, font);
[m_popup.get() dismissPopUp];
[dummyView.get() removeFromSuperview];