Title: [169079] trunk/Source/WebKit/mac
Revision
169079
Author
[email protected]
Date
2014-05-19 15:41:18 -0700 (Mon, 19 May 2014)

Log Message

Use different AppKit API for image control menus.
<rdar://problem/16807828> and https://bugs.webkit.org/show_bug.cgi?id=133087

Reviewed by Tim Horton.

For image control menus, use popUpMenuPositioningItem: instead of popUpContextMenu:

* WebCoreSupport/WebContextMenuClient.h:
* WebCoreSupport/WebContextMenuClient.mm:
(WebContextMenuClient::contextMenuForEvent):
(WebContextMenuClient::showContextMenu):

Modified Paths

Diff

Modified: trunk/Source/WebKit/mac/ChangeLog (169078 => 169079)


--- trunk/Source/WebKit/mac/ChangeLog	2014-05-19 22:39:27 UTC (rev 169078)
+++ trunk/Source/WebKit/mac/ChangeLog	2014-05-19 22:41:18 UTC (rev 169079)
@@ -1,3 +1,17 @@
+2014-05-19  Brady Eidson  <[email protected]>
+
+        Use different AppKit API for image control menus.
+        <rdar://problem/16807828> and https://bugs.webkit.org/show_bug.cgi?id=133087
+
+        Reviewed by Tim Horton.
+
+        For image control menus, use popUpMenuPositioningItem: instead of popUpContextMenu:
+        
+        * WebCoreSupport/WebContextMenuClient.h:
+        * WebCoreSupport/WebContextMenuClient.mm:
+        (WebContextMenuClient::contextMenuForEvent):
+        (WebContextMenuClient::showContextMenu):
+
 2014-05-19  Andy Estes  <[email protected]>
 
         Set WebKitSuppressesIncrementalRenderingKey to NO by default on both Mac and iOS

Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebContextMenuClient.h (169078 => 169079)


--- trunk/Source/WebKit/mac/WebCoreSupport/WebContextMenuClient.h	2014-05-19 22:39:27 UTC (rev 169078)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebContextMenuClient.h	2014-05-19 22:41:18 UTC (rev 169079)
@@ -65,7 +65,7 @@
     WebView *webView() { return m_webView; }
         
 private:
-    NSMenu *contextMenuForEvent(NSEvent *, NSView *);
+    NSMenu *contextMenuForEvent(NSEvent *, NSView *, bool& isServicesMenu);
 
     bool clientFloatRectForNode(WebCore::Node&, WebCore::FloatRect&) const;
 

Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebContextMenuClient.mm (169078 => 169079)


--- trunk/Source/WebKit/mac/WebCoreSupport/WebContextMenuClient.mm	2014-05-19 22:39:27 UTC (rev 169078)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebContextMenuClient.mm	2014-05-19 22:41:18 UTC (rev 169079)
@@ -460,8 +460,10 @@
 #endif
 
 
-NSMenu *WebContextMenuClient::contextMenuForEvent(NSEvent *event, NSView *view)
+NSMenu *WebContextMenuClient::contextMenuForEvent(NSEvent *event, NSView *view, bool& isServicesMenu)
 {
+    isServicesMenu = false;
+
     Page* page = [m_webView page];
     if (!page)
         return nil;
@@ -476,7 +478,8 @@
 
         bool isContentEditable = page->contextMenuController().context().hitTestResult().innerNode()->isContentEditable();
         m_sharingServicePickerController = adoptNS([[WebSharingServicePickerController alloc] initWithData:(NSData *)cfData.get() includeEditorServices:isContentEditable menuClient:this]);
-        
+
+        isServicesMenu = true;
         return [m_sharingServicePickerController menu];
     }
 #endif
@@ -501,8 +504,13 @@
     NSEvent* event = [NSEvent mouseEventWithType:NSRightMouseDown location:point modifierFlags:0 timestamp:0 windowNumber:[[view window] windowNumber] context:0 eventNumber:0 clickCount:1 pressure:1];
 
     // Show the contextual menu for this event.
-    if (NSMenu *menu = contextMenuForEvent(event, view))
-        [NSMenu popUpContextMenu:menu withEvent:event forView:view];
+    bool isServicesMenu;
+    if (NSMenu *menu = contextMenuForEvent(event, view, isServicesMenu)) {
+        if (isServicesMenu)
+            [menu popUpMenuPositioningItem:nil atLocation:[view convertPoint:point toView:nil] inView:view];
+        else
+            [NSMenu popUpContextMenu:menu withEvent:event forView:view];
+    }
 }
 
 #if ENABLE(SERVICE_CONTROLS)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to