Revision: 26745
          http://sourceforge.net/p/bibdesk/svn/26745
Author:   hofman
Date:     2021-08-26 09:38:53 +0000 (Thu, 26 Aug 2021)
Log Message:
-----------
Get dragged items from representedObject for drag image view when not supplied 
by delegate

Modified Paths:
--------------
    trunk/bibdesk/BDSKAddressTextField.m
    trunk/bibdesk/BDSKDragImageView.m

Modified: trunk/bibdesk/BDSKAddressTextField.m
===================================================================
--- trunk/bibdesk/BDSKAddressTextField.m        2021-08-26 09:30:34 UTC (rev 
26744)
+++ trunk/bibdesk/BDSKAddressTextField.m        2021-08-26 09:38:53 UTC (rev 
26745)
@@ -181,11 +181,6 @@
     return [super setKeyboardFocusRingNeedsDisplayInRect:[self bounds]];
 }
 
-- (NSArray *)draggedItemsForDragImageView:(BDSKDragImageView *)view {
-    NSURL *url = [[imageView cell] representedObject];
-    return url ? [NSArray arrayWithObject:url] : nil;
-}
-
 - (NSDragOperation)dragImageView:(BDSKDragImageView *)view 
sourceOperationMaskForDraggingContext:(NSDraggingContext)context {
     return NSDragOperationCopy | NSDragOperationLink | NSDragOperationGeneric 
| NSDragOperationPrivate;
 }

Modified: trunk/bibdesk/BDSKDragImageView.m
===================================================================
--- trunk/bibdesk/BDSKDragImageView.m   2021-08-26 09:30:34 UTC (rev 26744)
+++ trunk/bibdesk/BDSKDragImageView.m   2021-08-26 09:38:53 UTC (rev 26745)
@@ -124,27 +124,31 @@
         switch ([theEvent type]) {
             case NSLeftMouseDragged:
                 if(isInside){
-                    
-                    if ([delegate 
respondsToSelector:@selector(draggedItemsForDragImageView:)]) {
-                        NSArray *items = [delegate 
draggedItemsForDragImageView:self];
-                        if ([items count] > 0) {
-                            NSImage *dragImage = nil;
-                            NSRect imageRect = NSZeroRect;
-                            
-                            if ([delegate 
respondsToSelector:@selector(dragImageForDragImageView:)])
-                                dragImage = [delegate 
dragImageForDragImageView:self];
-                            if (dragImage == nil) {
-                                dragImage = [[[NSImage alloc] 
initWithSize:[self bounds].size] autorelease];
-                                NSBitmapImageRep *imageRep = [self 
bitmapImageRepForCachingDisplayInRect:[self bounds]];
-                                [self cacheDisplayInRect:[self bounds] 
toBitmapImageRep:imageRep];
-                                [dragImage addRepresentation:imageRep];
-                            }
-                            
-                            imageRect.size = [dragImage size];
-                            imageRect.origin = NSMakePoint(NSMidX([self 
bounds]) - 0.5 * NSWidth(imageRect), NSMidY([self bounds]) - 0.5 * 
NSHeight(imageRect));
-                            
-                            [self dragItems:items withImage:dragImage 
fromFrame:imageRect forEvent:theEvent];
+                    NSArray *items = nil;
+                    if ([delegate 
respondsToSelector:@selector(draggedItemsForDragImageView:)])
+                        items = [delegate draggedItemsForDragImageView:self];
+                    if (items == nil) {
+                        id object = [[self cell] representedObject];
+                        if ([[[self cell] representedObject] 
conformsToProtocol:@protocol(NSPasteboardWriting)])
+                            items = [NSArray arrayWithObject:object];
+                    }
+                    if ([items count] > 0) {
+                        NSImage *dragImage = nil;
+                        NSRect imageRect = NSZeroRect;
+                        
+                        if ([delegate 
respondsToSelector:@selector(dragImageForDragImageView:)])
+                            dragImage = [delegate 
dragImageForDragImageView:self];
+                        if (dragImage == nil) {
+                            dragImage = [[[NSImage alloc] initWithSize:[self 
bounds].size] autorelease];
+                            NSBitmapImageRep *imageRep = [self 
bitmapImageRepForCachingDisplayInRect:[self bounds]];
+                            [self cacheDisplayInRect:[self bounds] 
toBitmapImageRep:imageRep];
+                            [dragImage addRepresentation:imageRep];
                         }
+                        
+                        imageRect.size = [dragImage size];
+                        imageRect.origin = NSMakePoint(NSMidX([self bounds]) - 
0.5 * NSWidth(imageRect), NSMidY([self bounds]) - 0.5 * NSHeight(imageRect));
+                        
+                        [self dragItems:items withImage:dragImage 
fromFrame:imageRect forEvent:theEvent];
                     }
                                        keepOn = NO;
                     break;

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Bibdesk-commit mailing list
Bibdesk-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to