WebCore:
authoradele <adele@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 13 Oct 2006 02:13:57 +0000 (02:13 +0000)
committeradele <adele@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 13 Oct 2006 02:13:57 +0000 (02:13 +0000)
        Reviewed by Maciej.

        WebCore part of fix for <rdar://problem/4450613> need a means to attach user data to any menu that is popuped up in HTML

        Added private delegate method for clients that want access to a PopupMenu's NSMenu.

        * bridge/mac/FrameMac.h:
        * bridge/mac/FrameMac.mm: (WebCore::FrameMac::willPopupMenu):
        * bridge/mac/WebCoreFrameBridge.h:

        * platform/mac/PopupMenuMac.mm: (WebCore::PopupMenu::show): Calls willPopupMenu with the NSMenu about to be popped up.

WebKit:

        Reviewed by Maciej.

        WebKit part of fix for <rdar://problem/4450613> need a means to attach user data to any menu that is popuped up in HTML

        Added private delegate method for clients that want access to a PopupMenu's NSMenu.

        * DefaultDelegates/WebDefaultUIDelegate.m: (-[NSApplication webView:willPopupMenu:]):
        * WebCoreSupport/WebFrameBridge.m: (-[WebFrameBridge willPopupMenu:]):
        * WebView/WebUIDelegatePrivate.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@17023 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/bridge/mac/FrameMac.h
WebCore/bridge/mac/FrameMac.mm
WebCore/bridge/mac/WebCoreFrameBridge.h
WebCore/platform/mac/PopupMenuMac.mm
WebKit/ChangeLog
WebKit/DefaultDelegates/WebDefaultUIDelegate.m
WebKit/WebCoreSupport/WebFrameBridge.m
WebKit/WebView/WebUIDelegatePrivate.h

index fc702b20042f4a2edae8bc6bc333061b5cd5ef02..735303078c442eb19d2be2a5db2b24352a9f2ef9 100644 (file)
@@ -1,3 +1,17 @@
+2006-10-12  Adele Peterson  <adele@apple.com>
+
+        Reviewed by Maciej.
+
+        WebCore part of fix for <rdar://problem/4450613> need a means to attach user data to any menu that is popuped up in HTML
+
+        Added private delegate method for clients that want access to a PopupMenu's NSMenu.
+
+        * bridge/mac/FrameMac.h:
+        * bridge/mac/FrameMac.mm: (WebCore::FrameMac::willPopupMenu):
+        * bridge/mac/WebCoreFrameBridge.h:
+
+        * platform/mac/PopupMenuMac.mm: (WebCore::PopupMenu::show): Calls willPopupMenu with the NSMenu about to be popped up.
+
 2006-10-12  Adele Peterson  <adele@apple.com>
 
         Reviewed by Alice.
index 2c8ddfddd6d70b0cbcd507842f9becddc74f4363..3bd9662a738274a0bd8e46d5259c7626e7717576 100644 (file)
@@ -61,6 +61,7 @@ typedef DOMElement ObjCDOMElement;
 @class NSFileWrapper;
 @class NSFont;
 @class NSImage;
+@class NSMenu;
 @class NSMutableDictionary;
 @class NSResponder;
 @class NSString;
@@ -82,6 +83,7 @@ class NSEvent;
 class NSFileWrapper;
 class NSFont;
 class NSImage;
+class NSMenu;
 class NSMutableDictionary;
 class NSResponder;
 class NSString;
@@ -306,6 +308,8 @@ public:
     
     NSMutableDictionary* dashboardRegionsDictionary();
     void dashboardRegionsChanged();
+
+    void willPopupMenu(NSMenu *);
     
     virtual bool isCharacterSmartReplaceExempt(UChar, bool);
     
index 912b30a2b95822e123be712696317a308022a44d..14b56471f062cd233537a9a2883ad1bbd4ccf495 100644 (file)
@@ -3459,6 +3459,11 @@ void FrameMac::dashboardRegionsChanged()
     [_bridge dashboardRegionsChanged:webRegions];
 }
 
+void FrameMac::willPopupMenu(NSMenu * menu)
+{
+    [_bridge willPopupMenu:menu];
+}
+
 bool FrameMac::isCharacterSmartReplaceExempt(UChar c, bool isPreviousChar)
 {
     return [_bridge isCharacterSmartReplaceExempt:c isPreviousCharacter:isPreviousChar];
index 737bd23a56fea0b518cd725959798e7cc5fcba8c..88b45c51ef6c9b4e8fdd7fb013ecf8f7bf4f34e7 100644 (file)
@@ -40,6 +40,7 @@ typedef WebCore::Element WebCoreElement;
 
 #else
 
+@class NSMenu;
 @class WebCoreMacFrame;
 @class WebCoreElement;
 
@@ -54,6 +55,7 @@ typedef WebCore::Element WebCoreElement;
 @class DOMHTMLTextAreaElement;
 @class DOMNode;
 @class DOMRange;
+@class NSMenu;
 @class WebCorePageBridge;
 @class WebCoreSettings;
 @class WebFrame;
@@ -690,6 +692,7 @@ typedef enum {
 - (void)didFirstLayout;
 
 - (void)dashboardRegionsChanged:(NSMutableDictionary *)regions;
+- (void)willPopupMenu:(NSMenu *)menu;
 
 - (NSRect)customHighlightRect:(NSString*)type forLine:(NSRect)lineRect;
 - (void)paintCustomHighlight:(NSString*)type forBox:(NSRect)boxRect onLine:(NSRect)lineRect behindText:(BOOL)text entireLine:(BOOL)line;
index f48c14a759a3d25bf4e70bda8cdba7cb464afa1a..3ca7bb174821c2dc5b15db10c4abeb88568fa0d3 100644 (file)
@@ -101,6 +101,8 @@ void PopupMenu::show(const IntRect& r, FrameView* v, int index)
     NSEvent* event = [frame->currentEvent() retain];
     
     RefPtr<PopupMenu> protector(this);
+    
+    frame->willPopupMenu(menu);
     wkPopupMenu(menu, location, roundf(NSWidth(r)), view, index, font);
 
     if (menuList()) {
index dda7df2d877f66794cffe02ef61d50498e249ef2..98874b4e537ca50e4d167edb0f6293810f3a2973 100644 (file)
@@ -1,3 +1,15 @@
+2006-10-12  Adele Peterson  <adele@apple.com>
+
+        Reviewed by Maciej.
+
+        WebKit part of fix for <rdar://problem/4450613> need a means to attach user data to any menu that is popuped up in HTML
+
+        Added private delegate method for clients that want access to a PopupMenu's NSMenu.
+
+        * DefaultDelegates/WebDefaultUIDelegate.m: (-[NSApplication webView:willPopupMenu:]):
+        * WebCoreSupport/WebFrameBridge.m: (-[WebFrameBridge willPopupMenu:]):
+        * WebView/WebUIDelegatePrivate.h:
+
 2006-10-12  MorganL  <morganl.webkit@yahoo.com>
 
         Reviewed/landed by Adam.
index fb6963937af2d42c3aa3f70d0d835f87f1562a5f..740b2209d88128d00ab017de65406e17da85c745 100644 (file)
@@ -222,4 +222,8 @@ static WebDefaultUIDelegate *sharedDelegate = nil;
 {
 }
 
+- (void)webView:(WebView *)sender willPopupMenu:(NSMenu *)menu
+{
+}
+
 @end
index 5b2dbb49116cdad67fe2e9f851c6e17a6814bc18..075d28aaec583b9fd124e0901e9077f8b33e5140 100644 (file)
@@ -1538,6 +1538,15 @@ static id <WebFormDelegate> formDelegate(WebFrameBridge *self)
     }
 }
 
+- (void)willPopupMenu:(NSMenu *)menu
+{
+    WebView *wv = [self webView];
+    id wd = [wv UIDelegate];
+        
+    if ([wd respondsToSelector:@selector(webView:willPopupMenu:)])
+        [wd webView:wv willPopupMenu:menu];
+}
+
 - (NSRect)customHighlightRect:(NSString*)type forLine:(NSRect)lineRect
 {
     ASSERT(_frame != nil);
index 76904cc585ba25ec5146c218643ddb46feba9461..bd86618a75d21f0d790f01db32e5c9b013382d93 100644 (file)
@@ -41,5 +41,6 @@
 - (void)webView:(WebView *)sender didDrawRect:(NSRect)rect;
 - (void)webView:(WebView *)sender didScrollDocumentInFrameView:(WebFrameView *)frameView;
 - (BOOL)webViewShouldInterruptJavaScript:(WebView *)sender;
+- (void)webView:(WebView *)sender willPopupMenu:(NSMenu *)menu;
 
 @end