[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

cblu cblu at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 06:51:28 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 044f57b8287a7507d7de92473735d551d976ca08
Author: cblu <cblu at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sun Oct 20 22:10:05 2002 +0000

    	Fixed 3050010: Should show contextual menu for WebImageView
    	Also made drags from WebImageView work.
    
            * Misc.subproj/WebNSViewExtras.h:
            * Misc.subproj/WebNSViewExtras.m: added _web_setPromisedImageDragImage which does the hackery to extend the promised file drag for images
            * WebView.subproj/WebControllerPrivate.h:
            * WebView.subproj/WebControllerPrivate.m:
            (-[WebController _menuForElement:]): added, gets menu items from delegate and creates menu
            * WebView.subproj/WebHTMLView.m:
            (-[WebHTMLView menuForEvent:]): simplified, gets element and calls -[WebController _menuForElement:]
            (-[WebHTMLView dragImage:at:offset:event:pasteboard:source:slideBack:]): call _web_setPromisedImageDragImage: when dragging image
            * WebView.subproj/WebImageRepresentation.h:
            * WebView.subproj/WebImageRepresentation.m:
            (-[WebImageRepresentation dealloc]): release the URL
            (-[WebImageRepresentation URL]): added so WebImageView can get the URL
            (-[WebImageRepresentation setDataSource:]): retain the URL
            * WebView.subproj/WebImageView.h: use new drag bools
            * WebView.subproj/WebImageView.m:
            (-[WebImageView initWithFrame:]): ditto
            (-[WebImageView setAcceptsDrags:]): ditto
            (-[WebImageView acceptsDrags]): ditto
            (-[WebImageView setAcceptsDrops:]): ditto
            (-[WebImageView acceptsDrops]): ditto
            (-[WebImageView controller]): new
            (-[WebImageView menuForEvent:]): new, creates element and calls -[WebController _menuForElement:]
            (-[WebImageView mouseDragged:]): drag promised file
            (-[WebImageView dragImage:at:offset:event:pasteboard:source:slideBack:]): call _web_setPromisedImageDragImage:
            (-[WebImageView namesOfPromisedFilesDroppedAtDestination:]): new
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2382 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index 534fed0..2c1ad1b 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,34 @@
+2002-10-20  Chris Blumenberg  <cblu at apple.com>
+
+	Fixed 3050010: Should show contextual menu for WebImageView
+	Also made drags from WebImageView work.
+
+        * Misc.subproj/WebNSViewExtras.h:
+        * Misc.subproj/WebNSViewExtras.m: added _web_setPromisedImageDragImage which does the hackery to extend the promised file drag for images
+        * WebView.subproj/WebControllerPrivate.h:
+        * WebView.subproj/WebControllerPrivate.m:
+        (-[WebController _menuForElement:]): added, gets menu items from delegate and creates menu
+        * WebView.subproj/WebHTMLView.m:
+        (-[WebHTMLView menuForEvent:]): simplified, gets element and calls -[WebController _menuForElement:]
+        (-[WebHTMLView dragImage:at:offset:event:pasteboard:source:slideBack:]): call _web_setPromisedImageDragImage: when dragging image
+        * WebView.subproj/WebImageRepresentation.h:
+        * WebView.subproj/WebImageRepresentation.m:
+        (-[WebImageRepresentation dealloc]): release the URL
+        (-[WebImageRepresentation URL]): added so WebImageView can get the URL
+        (-[WebImageRepresentation setDataSource:]): retain the URL
+        * WebView.subproj/WebImageView.h: use new drag bools
+        * WebView.subproj/WebImageView.m:
+        (-[WebImageView initWithFrame:]): ditto
+        (-[WebImageView setAcceptsDrags:]): ditto
+        (-[WebImageView acceptsDrags]): ditto
+        (-[WebImageView setAcceptsDrops:]): ditto
+        (-[WebImageView acceptsDrops]): ditto
+        (-[WebImageView controller]): new
+        (-[WebImageView menuForEvent:]): new, creates element and calls -[WebController _menuForElement:]
+        (-[WebImageView mouseDragged:]): drag promised file
+        (-[WebImageView dragImage:at:offset:event:pasteboard:source:slideBack:]): call _web_setPromisedImageDragImage:
+        (-[WebImageView namesOfPromisedFilesDroppedAtDestination:]): new
+
 2002-10-20  Darin Adler  <darin at apple.com>
 
 	- fixed a problem where you would get garbage bits when resizing while loading a standalone image
diff --git a/WebKit/ChangeLog-2002-12-03 b/WebKit/ChangeLog-2002-12-03
index 534fed0..2c1ad1b 100644
--- a/WebKit/ChangeLog-2002-12-03
+++ b/WebKit/ChangeLog-2002-12-03
@@ -1,3 +1,34 @@
+2002-10-20  Chris Blumenberg  <cblu at apple.com>
+
+	Fixed 3050010: Should show contextual menu for WebImageView
+	Also made drags from WebImageView work.
+
+        * Misc.subproj/WebNSViewExtras.h:
+        * Misc.subproj/WebNSViewExtras.m: added _web_setPromisedImageDragImage which does the hackery to extend the promised file drag for images
+        * WebView.subproj/WebControllerPrivate.h:
+        * WebView.subproj/WebControllerPrivate.m:
+        (-[WebController _menuForElement:]): added, gets menu items from delegate and creates menu
+        * WebView.subproj/WebHTMLView.m:
+        (-[WebHTMLView menuForEvent:]): simplified, gets element and calls -[WebController _menuForElement:]
+        (-[WebHTMLView dragImage:at:offset:event:pasteboard:source:slideBack:]): call _web_setPromisedImageDragImage: when dragging image
+        * WebView.subproj/WebImageRepresentation.h:
+        * WebView.subproj/WebImageRepresentation.m:
+        (-[WebImageRepresentation dealloc]): release the URL
+        (-[WebImageRepresentation URL]): added so WebImageView can get the URL
+        (-[WebImageRepresentation setDataSource:]): retain the URL
+        * WebView.subproj/WebImageView.h: use new drag bools
+        * WebView.subproj/WebImageView.m:
+        (-[WebImageView initWithFrame:]): ditto
+        (-[WebImageView setAcceptsDrags:]): ditto
+        (-[WebImageView acceptsDrags]): ditto
+        (-[WebImageView setAcceptsDrops:]): ditto
+        (-[WebImageView acceptsDrops]): ditto
+        (-[WebImageView controller]): new
+        (-[WebImageView menuForEvent:]): new, creates element and calls -[WebController _menuForElement:]
+        (-[WebImageView mouseDragged:]): drag promised file
+        (-[WebImageView dragImage:at:offset:event:pasteboard:source:slideBack:]): call _web_setPromisedImageDragImage:
+        (-[WebImageView namesOfPromisedFilesDroppedAtDestination:]): new
+
 2002-10-20  Darin Adler  <darin at apple.com>
 
 	- fixed a problem where you would get garbage bits when resizing while loading a standalone image
diff --git a/WebKit/Misc.subproj/WebNSViewExtras.h b/WebKit/Misc.subproj/WebNSViewExtras.h
index 505d3b0..501bd67 100644
--- a/WebKit/Misc.subproj/WebNSViewExtras.h
+++ b/WebKit/Misc.subproj/WebNSViewExtras.h
@@ -5,6 +5,9 @@
 
 #import <AppKit/AppKit.h>
 
+#define DragImageAlpha    		0.75
+#define MaxDragImageSize 		NSMakeSize(400, 400)
+
 @class WebView;
 
 @interface NSView (WebExtras)
@@ -20,4 +23,16 @@
 // Convenience method. Returns NSDragOperationCopy if _web_bestURLFromPasteboard doesn't return nil.
 // Returns NSDragOperationNone otherwise.
 - (NSDragOperation)_web_dragOperationForDraggingInfo:(id <NSDraggingInfo>)sender;
+
+// Resizes and applies alpha to image, extends pboard and sets drag origins for dragging promised images.
+// Only call from within your overidden dragImage:at:offset:event:pasteboard:source:slideBack: method
+// after calling dragPromisedFilesOfTypes:fromRect:source:slideBack:event:
+// Only really needed by WebImageView and WebHTMLView.
+- (void)_web_setPromisedImageDragImage:(NSImage **)dragImage
+                                    at:(NSPoint *)imageLoc
+                                offset:(NSSize *)mouseOffset
+                         andPasteboard:(NSPasteboard *)pboard
+                             withImage:(NSImage *)image
+                              andEvent:(NSEvent *)theEvent;
+
 @end
diff --git a/WebKit/Misc.subproj/WebNSViewExtras.m b/WebKit/Misc.subproj/WebNSViewExtras.m
index e19f09b..571da61 100644
--- a/WebKit/Misc.subproj/WebNSViewExtras.m
+++ b/WebKit/Misc.subproj/WebNSViewExtras.m
@@ -3,9 +3,9 @@
         Copyright (c) 2002, Apple, Inc. All rights reserved.
 */
 
-#import <WebKit/WebNSViewExtras.h>
-
+#import <WebKit/WebNSImageExtras.h>
 #import <WebKit/WebNSPasteboardExtras.h>
+#import <WebKit/WebNSViewExtras.h>
 #import <WebKit/WebView.h>
 
 #import <WebFoundation/WebNSStringExtras.h>
@@ -144,4 +144,34 @@
 }
 #endif
 
+- (void)_web_setPromisedImageDragImage:(NSImage **)dragImage
+                                    at:(NSPoint *)imageLoc
+                                offset:(NSSize *)mouseOffset
+                         andPasteboard:(NSPasteboard *)pboard
+                             withImage:(NSImage *)image
+                              andEvent:(NSEvent *)theEvent;
+{
+    *dragImage = [[image copy] autorelease];
+    
+    NSSize originalSize = [*dragImage size];
+    [*dragImage _web_scaleToMaxSize:MaxDragImageSize];
+    NSSize newSize = [*dragImage size];
+
+    [*dragImage _web_dissolveToFraction:DragImageAlpha];
+
+    NSPoint mouseDownPoint = [self convertPoint:[theEvent locationInWindow] fromView:nil];
+    NSPoint currentPoint = [self convertPoint:[[_window currentEvent] locationInWindow] fromView:nil];
+
+    // Properly orient the drag image and orient it differently if it's smaller than the original
+    imageLoc->x = mouseDownPoint.x - (((mouseDownPoint.x - imageLoc->x) / originalSize.width) * newSize.width);
+    imageLoc->y = imageLoc->y + originalSize.height;
+    imageLoc->y = mouseDownPoint.y - (((mouseDownPoint.y - imageLoc->y) / originalSize.height) * newSize.height);
+
+    NSSize offset = NSMakeSize(currentPoint.x - mouseDownPoint.x, currentPoint.y - mouseDownPoint.y);
+    mouseOffset = &offset;
+    
+    [pboard addTypes:[NSArray arrayWithObject:NSTIFFPboardType] owner:self];
+    [pboard setData:[image TIFFRepresentation] forType:NSTIFFPboardType];
+}
+
 @end
diff --git a/WebKit/WebView.subproj/WebControllerPrivate.h b/WebKit/WebView.subproj/WebControllerPrivate.h
index b997637..34035ce 100644
--- a/WebKit/WebView.subproj/WebControllerPrivate.h
+++ b/WebKit/WebView.subproj/WebControllerPrivate.h
@@ -61,4 +61,5 @@
 
 - (WebController *)_openNewWindowWithURL:(NSURL *)URL referrer:(NSString *)referrer behind:(BOOL)behind;
 
+- (NSMenu *)_menuForElement:(NSDictionary *)element;
 @end
diff --git a/WebKit/WebView.subproj/WebControllerPrivate.m b/WebKit/WebView.subproj/WebControllerPrivate.m
index eba094a..69cdb0c 100644
--- a/WebKit/WebView.subproj/WebControllerPrivate.m
+++ b/WebKit/WebView.subproj/WebControllerPrivate.m
@@ -260,4 +260,30 @@
     return newWindowController;
 }
 
+- (NSMenu *)_menuForElement:(NSDictionary *)element
+{
+    NSArray *defaultMenuItems = [_private->defaultContextMenuDelegate contextMenuItemsForElement:element
+                                                                                defaultMenuItems:nil];
+    NSArray *menuItems = nil;
+    NSMenu *menu = nil;
+    unsigned i;
+
+    if(_private->contextMenuDelegate){
+        menuItems = [_private->contextMenuDelegate contextMenuItemsForElement:element
+                                                             defaultMenuItems:defaultMenuItems];
+    } else {
+        menuItems = defaultMenuItems;
+    }
+
+    if(menuItems && [menuItems count] > 0){
+        menu = [[[NSMenu alloc] init] autorelease];
+
+        for(i=0; i<[menuItems count]; i++){
+            [menu addItem:[menuItems objectAtIndex:i]];
+        }
+    }
+
+    return menu;
+}
+
 @end
diff --git a/WebKit/WebView.subproj/WebHTMLView.m b/WebKit/WebView.subproj/WebHTMLView.m
index e6f7472..22b15f4 100644
--- a/WebKit/WebView.subproj/WebHTMLView.m
+++ b/WebKit/WebView.subproj/WebHTMLView.m
@@ -41,9 +41,6 @@
 
 #define MIN_DRAG_LABEL_WIDTH_BEFORE_CLIP	120.0
 
-#define DragImageAlpha    		0.75
-#define MaxDragImageSize 		NSMakeSize(400, 400)
-
 #import <CoreGraphics/CGStyle.h>
 #import <CoreGraphics/CGSTypes.h>
 #import <CoreGraphics/CGContextGState.h>
@@ -304,36 +301,11 @@
 }
 
 - (NSMenu *)menuForEvent:(NSEvent *)theEvent
-{
-    id <WebContextMenuDelegate> contextMenuDelegate, defaultContextMenuDelegate;
-    NSArray *menuItems, *defaultMenuItems;
-    NSDictionary *elementInfo;
-    NSMenu *menu = nil;
-    NSPoint point;
-    unsigned i;
-    
-    point = [self convertPoint:[theEvent locationInWindow] fromView:nil];
-    elementInfo = [self _elementAtPoint:point];
-
-    defaultContextMenuDelegate = [[self _controller] _defaultContextMenuDelegate];
-    defaultMenuItems = [defaultContextMenuDelegate contextMenuItemsForElement: elementInfo  defaultMenuItems: nil];
-    contextMenuDelegate = [[self _controller] contextMenuDelegate];
+{    
+    NSPoint point = [self convertPoint:[theEvent locationInWindow] fromView:nil];
+    NSDictionary *element = [self _elementAtPoint:point];
 
-    if(contextMenuDelegate){
-        menuItems = [contextMenuDelegate contextMenuItemsForElement: elementInfo  defaultMenuItems: defaultMenuItems];
-    } else {
-        menuItems = defaultMenuItems;
-    }
-    
-    if([menuItems count] > 0){
-        menu = [[[NSMenu alloc] init] autorelease];
-    
-        for(i=0; i<[menuItems count]; i++){
-            [menu addItem:[menuItems objectAtIndex:i]];
-        }
-    }
-    
-    return menu;
+    return [[self _controller] _menuForElement:element];
 }
 
 - (void)setContextMenusEnabled: (BOOL)flag
@@ -596,29 +568,15 @@
     if(_private->draggingImageElement){
         // Subclassing dragImage for image drags let's us change aspects of the drag that the
         // promised file API doesn't provide such as a different drag image, other pboard types etc.
-        
-        NSImage *originalImage = [_private->draggingImageElement objectForKey:WebElementImageKey];
-        anImage = [[originalImage copy] autorelease];
-        
-        NSSize originalSize = [anImage size];
-        [anImage _web_scaleToMaxSize:MaxDragImageSize];
-        NSSize newSize = [anImage size];
-
-        [anImage _web_dissolveToFraction:DragImageAlpha];
 
-        NSPoint mouseDownPoint = [self convertPoint:[theEvent locationInWindow] fromView:nil];
-        NSPoint currentPoint = [self convertPoint:[[_window currentEvent] locationInWindow] fromView:nil];
-
-        // Properly orient the drag image and orient it differently if it's smaller than the original
         imageLoc = [[_private->draggingImageElement objectForKey:WebElementImageLocationKey] pointValue];
-        imageLoc.x = mouseDownPoint.x - (((mouseDownPoint.x - imageLoc.x) / originalSize.width) * newSize.width);
-        imageLoc.y = imageLoc.y + originalSize.height;
-        imageLoc.y = mouseDownPoint.y - (((mouseDownPoint.y - imageLoc.y) / originalSize.height) * newSize.height);
-        
-        mouseOffset = NSMakeSize(currentPoint.x - mouseDownPoint.x, currentPoint.y - mouseDownPoint.y);
 
-        [pboard addTypes:[NSArray arrayWithObject:NSTIFFPboardType] owner:self];
-        [pboard setData:[originalImage TIFFRepresentation] forType:NSTIFFPboardType];
+        [self _web_setPromisedImageDragImage:&anImage
+                                          at:&imageLoc
+                                      offset:&mouseOffset
+                               andPasteboard:pboard
+                                   withImage:[_private->draggingImageElement objectForKey:WebElementImageKey]
+                                    andEvent:theEvent];
     }
 
     [super dragImage:anImage
diff --git a/WebKit/WebView.subproj/WebImageRepresentation.h b/WebKit/WebView.subproj/WebImageRepresentation.h
index f78590a..9aa4d73 100644
--- a/WebKit/WebView.subproj/WebImageRepresentation.h
+++ b/WebKit/WebView.subproj/WebImageRepresentation.h
@@ -11,6 +11,8 @@
 @interface WebImageRepresentation : NSObject <WebDocumentRepresentation>
 {
     WebImageRenderer *image;
+    NSURL *URL;
 }
 - (WebImageRenderer *)image;
+- (NSURL *)URL;
 @end
diff --git a/WebKit/WebView.subproj/WebImageRepresentation.m b/WebKit/WebView.subproj/WebImageRepresentation.m
index c1861d2..298d27f 100644
--- a/WebKit/WebView.subproj/WebImageRepresentation.m
+++ b/WebKit/WebView.subproj/WebImageRepresentation.m
@@ -23,6 +23,7 @@
 - (void)dealloc
 {
     [image release];
+    [URL release];
     [super dealloc];
 }
 
@@ -31,8 +32,14 @@
     return image;
 }
 
+- (NSURL *)URL
+{
+    return URL;
+}
+
 - (void)setDataSource:(WebDataSource *)dataSource
 {
+    URL = [[dataSource URL] retain];
 }
 
 - (void)receivedData:(NSData *)data withDataSource:(WebDataSource *)dataSource
diff --git a/WebKit/WebView.subproj/WebImageView.h b/WebKit/WebView.subproj/WebImageView.h
index c09be66..52134e1 100644
--- a/WebKit/WebView.subproj/WebImageView.h
+++ b/WebKit/WebView.subproj/WebImageView.h
@@ -12,8 +12,8 @@
 @interface WebImageView : NSView <WebDocumentView, WebDocumentDragSettings>
 {
     WebImageRepresentation *representation;
-    BOOL canDragFrom;
-    BOOL canDragTo;
+    BOOL acceptsDrags;
+    BOOL acceptsDrops;
     BOOL didSetFrame;
 }
 @end
diff --git a/WebKit/WebView.subproj/WebImageView.m b/WebKit/WebView.subproj/WebImageView.m
index c1d7d24..43d3f4d 100644
--- a/WebKit/WebView.subproj/WebImageView.m
+++ b/WebKit/WebView.subproj/WebImageView.m
@@ -3,12 +3,15 @@
 	Copyright 2002, Apple, Inc. All rights reserved.
 */
 
-#import <WebKit/WebImageView.h>
 
+#import <WebKit/WebControllerPrivate.h>
+#import <WebKit/WebDataSource.h>
 #import <WebKit/WebDocument.h>
 #import <WebKit/WebImageRenderer.h>
 #import <WebKit/WebImageRepresentation.h>
-#import <WebKit/WebDataSource.h>
+#import <WebKit/WebImageView.h>
+#import <WebKit/WebNSViewExtras.h>
+#import <WebKit/WebView.h>
 
 @implementation WebImageView
 
@@ -16,8 +19,8 @@
 {
     self = [super initWithFrame:frame];
     if (self) {
-        canDragFrom = YES;
-        canDragTo = YES;
+        acceptsDrags = YES;
+        acceptsDrops = YES;
     }
     return self;
 }
@@ -65,29 +68,99 @@
 
 - (void)setAcceptsDrags: (BOOL)flag
 {
-    canDragFrom = flag;
+    acceptsDrags = flag;
 }
 
 - (BOOL)acceptsDrags
 {
-    return canDragFrom;
+    return acceptsDrags;
 }
 
 - (void)setAcceptsDrops: (BOOL)flag
 {
-    canDragTo = flag;
+    acceptsDrops = flag;
 }
 
 - (BOOL)acceptsDrops
 {
-    return canDragTo;
+    return acceptsDrops;
 }
 
 - (void)viewDidMoveToWindow
 {
-    if (![self window])
+    if (![self window]){
         [[representation image] stopAnimation];
+    }
+    
     [super viewDidMoveToWindow];
 }
 
+- (WebController *)controller
+{
+    return [[self _web_parentWebView] controller];
+}
+
+- (NSMenu *)menuForEvent:(NSEvent *)theEvent
+{
+    WebView *webView = [self _web_parentWebView];
+    WebController *controller = [self controller];
+    
+    NSDictionary *element = [NSDictionary dictionaryWithObjectsAndKeys:
+        [representation image], WebElementImageKey,
+        [representation URL], WebElementImageURLKey,
+        [controller frameForView:webView], WebElementFrameKey, nil];
+        
+    return [controller _menuForElement:element];
+}
+
+- (void)mouseDragged:(NSEvent *)event
+{
+    if(acceptsDrags){
+        [self dragPromisedFilesOfTypes:[NSArray arrayWithObject:[[[representation URL] path] pathExtension]]
+                              fromRect:NSZeroRect
+                                source:self
+                             slideBack:YES
+                                 event:event];
+    }
+}
+
+// Subclassing dragImage for image drags let's us change aspects of the drag that the
+// promised file API doesn't provide such as a different drag image, other pboard types etc.
+- (void)dragImage:(NSImage *)anImage
+               at:(NSPoint)imageLoc
+           offset:(NSSize)mouseOffset
+            event:(NSEvent *)theEvent
+       pasteboard:(NSPasteboard *)pboard
+           source:(id)sourceObject
+        slideBack:(BOOL)slideBack
+{
+    [self _web_setPromisedImageDragImage:&anImage
+                                      at:&imageLoc
+                                  offset:&mouseOffset
+                           andPasteboard:pboard
+                               withImage:[representation image]
+                                andEvent:theEvent];
+    
+    [super dragImage:anImage
+                  at:imageLoc
+              offset:mouseOffset
+               event:theEvent
+          pasteboard:pboard
+              source:sourceObject
+           slideBack:slideBack];
+}
+
+- (NSArray *)namesOfPromisedFilesDroppedAtDestination:(NSURL *)dropDestination
+{
+    NSURL *URL = [representation URL];
+    NSString *filename = [[URL path] lastPathComponent];
+    NSString *path = [[dropDestination path] stringByAppendingPathComponent:filename];
+
+    [[self controller] _downloadURL:URL
+                  withContentPolicy:[WebContentPolicy webPolicyWithContentAction:WebContentPolicySave
+                                                                         andPath:path]];
+
+    return [NSArray arrayWithObject:filename];
+}
+
 @end
diff --git a/WebKit/WebView.subproj/WebViewPrivate.h b/WebKit/WebView.subproj/WebViewPrivate.h
index b997637..34035ce 100644
--- a/WebKit/WebView.subproj/WebViewPrivate.h
+++ b/WebKit/WebView.subproj/WebViewPrivate.h
@@ -61,4 +61,5 @@
 
 - (WebController *)_openNewWindowWithURL:(NSURL *)URL referrer:(NSString *)referrer behind:(BOOL)behind;
 
+- (NSMenu *)_menuForElement:(NSDictionary *)element;
 @end
diff --git a/WebKit/WebView.subproj/WebViewPrivate.m b/WebKit/WebView.subproj/WebViewPrivate.m
index eba094a..69cdb0c 100644
--- a/WebKit/WebView.subproj/WebViewPrivate.m
+++ b/WebKit/WebView.subproj/WebViewPrivate.m
@@ -260,4 +260,30 @@
     return newWindowController;
 }
 
+- (NSMenu *)_menuForElement:(NSDictionary *)element
+{
+    NSArray *defaultMenuItems = [_private->defaultContextMenuDelegate contextMenuItemsForElement:element
+                                                                                defaultMenuItems:nil];
+    NSArray *menuItems = nil;
+    NSMenu *menu = nil;
+    unsigned i;
+
+    if(_private->contextMenuDelegate){
+        menuItems = [_private->contextMenuDelegate contextMenuItemsForElement:element
+                                                             defaultMenuItems:defaultMenuItems];
+    } else {
+        menuItems = defaultMenuItems;
+    }
+
+    if(menuItems && [menuItems count] > 0){
+        menu = [[[NSMenu alloc] init] autorelease];
+
+        for(i=0; i<[menuItems count]; i++){
+            [menu addItem:[menuItems objectAtIndex:i]];
+        }
+    }
+
+    return menu;
+}
+
 @end

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list