Revision: 13914
          http://sourceforge.net/p/skim-app/code/13914
Author:   hofman
Date:     2023-12-17 23:22:11 +0000 (Sun, 17 Dec 2023)
Log Message:
-----------
add drag image component for all pages dragged from overview

Modified Paths:
--------------
    trunk/SKThumbnailView.m

Modified: trunk/SKThumbnailView.m
===================================================================
--- trunk/SKThumbnailView.m     2023-12-17 16:51:17 UTC (rev 13913)
+++ trunk/SKThumbnailView.m     2023-12-17 23:22:11 UTC (rev 13914)
@@ -416,6 +416,16 @@
 
 #pragma mark Event handling
 
+- (NSDraggingImageComponent *)draggingImageComponent {
+    NSDraggingImageComponent *component = [[NSDraggingImageComponent alloc] 
initWithKey:NSDraggingImageComponentIconKey];
+    NSRect rect = [imageView frame];
+    NSImage *dragImage = [[NSImage alloc] initWithSize:rect.size];
+    [dragImage addRepresentation:[imageView 
bitmapImageRepCachingDisplayInRect:[imageView bounds]]];
+    [component setContents:dragImage];
+    [component setFrame:rect];
+    return component;
+}
+
 - (void)mouseDown:(NSEvent *)theEvent {
     if ([NSApp willDragMouse]) {
         
@@ -428,13 +438,27 @@
         
         if (item) {
             
-            NSRect rect = [imageView frame];
-            NSBitmapImageRep *imageRep = [imageView 
bitmapImageRepCachingDisplayInRect:[imageView bounds]];
-            NSImage *dragImage = [[NSImage alloc] initWithSize:rect.size];
-            [dragImage addRepresentation:imageRep];
+            NSDraggingItem *dragItem = [[NSDraggingItem alloc] 
initWithPasteboardWriter:item];
             
-            NSDraggingItem *dragItem = [[NSDraggingItem alloc] 
initWithPasteboardWriter:item];
-            [dragItem setDraggingFrame:rect contents:dragImage];
+            [dragItem setDraggingFrame:[self bounds]];
+            if (selectionIndexes == nil) {
+                [dragItem setImageComponentsProvider:^{
+                    return @[[self draggingImageComponent]];
+                }];
+            } else {
+                [dragItem setImageComponentsProvider:^{
+                    NSMutableArray *components = [NSMutableArray array];
+                    NSCollectionView *collectionView = [[self controller] 
collectionView];
+                    [selectionIndexes enumerateIndexesUsingBlock:^(NSUInteger 
idx, BOOL *stop){
+                        SKThumbnailView *view = (SKThumbnailView 
*)[[collectionView itemAtIndexPath:[NSIndexPath indexPathForItem:idx 
inSection:0]] view];
+                        NSDraggingImageComponent *component = [view 
draggingImageComponent];
+                        [component setFrame:[self convertRect:[component 
frame] fromView:view]];
+                        [components addObject:component];
+                    }];
+                    return components;
+                }];
+            }
+            
             [self beginDraggingSessionWithItems:@[dragItem] event:theEvent 
source:self];
         }
         

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



_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to