Commit Diff


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<n; i++)
+	if(fork() == 0)
+		execl("macedit", "macedit", [[files objectAtIndex:i] UTF8String], nil);
+
+	return YES;
+}
+
 @end
 
 double
@@ -353,6 +389,9 @@ makewin(char *s)
 		NSWindowCollectionBehaviorFullScreenPrimary];
 #endif
 	[w setContentMinSize:NSMakeSize(128,128)];
+
+	[w registerForDraggedTypes:[NSArray arrayWithObjects: 
+		NSFilenamesPboardType, nil]];
 
 	win.ofs[0] = w;
 	win.ofs[1] = [[appwin alloc]