aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/macedit17
-rwxr-xr-xmac/Plumb.app/Contents/MacOS/plumb11
-rw-r--r--src/cmd/devdraw/cocoa-screen.m39
3 files changed, 57 insertions, 10 deletions
diff --git a/bin/macedit b/bin/macedit
new file mode 100755
index 00000000..23a17a25
--- /dev/null
+++ b/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
diff --git a/mac/Plumb.app/Contents/MacOS/plumb b/mac/Plumb.app/Contents/MacOS/plumb
index f98cd2e7..850ec0e0 100755
--- a/mac/Plumb.app/Contents/MacOS/plumb
+++ b/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
diff --git a/src/cmd/devdraw/cocoa-screen.m b/src/cmd/devdraw/cocoa-screen.m
index 03355362..fc73814b 100644
--- a/src/cmd/devdraw/cocoa-screen.m
+++ b/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<n; i++)
+ if(fork() == 0)
+ execl("macedit", "macedit", [[files objectAtIndex:i] UTF8String], nil);
+
+ return YES;
+}
+
@end
double
@@ -354,6 +390,9 @@ makewin(char *s)
#endif
[w setContentMinSize:NSMakeSize(128,128)];
+ [w registerForDraggedTypes:[NSArray arrayWithObjects:
+ NSFilenamesPboardType, nil]];
+
win.ofs[0] = w;
win.ofs[1] = [[appwin alloc]
initWithContentRect:sr