commit d52bdd3356137cf67a3458fdee5c94fdec4337e1 from: marius a. eriksen via: Russ Cox date: Wed Jun 03 15:26:27 2015 UTC devdraw: plumb drag-n-dropped files Change-Id: I7585870aee57c7482ebdd19c117be7982123ce79 Reviewed-on: https://plan9port-review.googlesource.com/1130 Reviewed-by: Russ Cox commit - 25822e8da338df2c15959bd8d347f230dc2b2d89 commit + d52bdd3356137cf67a3458fdee5c94fdec4337e1 blob - /dev/null blob + 23a17a25b8ae2aa9705f8379cc649f63b8523932 (mode 755) --- /dev/null +++ bin/macedit @@ -0,0 +1,17 @@ +#!/bin/bash + +PLAN9=${PLAN9:-/usr/local/plan9} +bin=$PLAN9/bin + +file=$1 + +# Blanks are problematic in filenames: just plumb +# the file's content. +if echo "$file" | grep -q " " +then + base=$(basename "$file" | sed 's/ /_/g') + attr="action=showdata filename=/BadName/$base" + cat $file | "$bin/plumb" -i -d edit -a "$attr" +else + "$bin/plumb" -d edit "$file" +fi blob - f98cd2e7a6c313b1c27de2e44299d4e07d112c95 blob + 850ec0e00f8f6f02fff258f293a1190971c7a36a --- mac/Plumb.app/Contents/MacOS/plumb +++ mac/Plumb.app/Contents/MacOS/plumb @@ -10,14 +10,5 @@ IFS=$'\n' for file in $($bin/macargv) do - # Blanks are problematic in filenames: just plumb - # the file's content. - if echo "$file" | grep -q " " - then - base=$(basename "$file" | sed 's/ /_/g') - attr="action=showdata filename=/BadName/$base" - cat $file | "$bin/plumb" -i -d edit -a "$attr" - else - "$bin/plumb" -d edit "$file" - fi + $bin/macedit "$file" done blob - 033553624b885b1485ec44eb16049f61a38abfba blob + fc73814b8ab164820228fd58f51fc7a7c288a0f9 --- src/cmd/devdraw/cocoa-screen.m +++ src/cmd/devdraw/cocoa-screen.m @@ -159,6 +159,7 @@ static NSRect dilate(NSRect); detachDrawingThread:@selector(callservep9p:) toTarget:[self class] withObject:nil]; } + - (void)windowDidBecomeKey:(id)arg { getmousepos(); @@ -298,6 +299,41 @@ attachscreen(char *label, char *winsize) [win.content setHidden:NO]; [super deminiaturize:arg]; } + +- (NSDragOperation)draggingEntered:(id)arg +{ + NSPasteboard *b; + NSDragOperation op; + + op = [arg draggingSourceOperationMask]; + b = [arg draggingPasteboard]; + + if([[b types] containsObject:NSFilenamesPboardType]) + if(op&NSDragOperationLink) + return NSDragOperationLink; + + return NSDragOperationNone; +} + +- (BOOL)performDragOperation:(id)arg +{ + NSPasteboard *b; + NSArray *files; + int i, n; + + b = [arg draggingPasteboard]; + if(![[b types] containsObject:NSFilenamesPboardType]) + return NO; + + files = [b propertyListForType:NSFilenamesPboardType]; + n = [files count]; + for(i=0; i