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