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 fc702b2..7353030 100644 (file)
@@ -1,5 +1,19 @@
 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.
 
         - Fix for <rdar://problem/4707372> 
index 2c8ddfd..3bd9662 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 912b30a..14b5647 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 737bd23..88b45c5 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 f48c14a..3ca7bb1 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 dda7df2..98874b4 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 fb69639..740b220 100644 (file)
@@ -222,4 +222,8 @@ static WebDefaultUIDelegate *sharedDelegate = nil;
 {
 }
 
+- (void)webView:(WebView *)sender willPopupMenu:(NSMenu *)menu
+{
+}
+
 @end
index 5b2dbb4..075d28a 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 76904cc..bd86618 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