diff -ru tk8.6.7/macosx/tkMacOSXDialog.c tk8.6.7-patched/macosx/tkMacOSXDialog.c
--- tk8.6.7/macosx/tkMacOSXDialog.c	2017-07-28 20:30:50.000000000 +0200
+++ tk8.6.7-patched/macosx/tkMacOSXDialog.c	2017-08-02 22:05:02.000000000 +0200
@@ -159,6 +159,23 @@
     [TYPE_YESNOCANCEL] =	{5, 6, 4},
 };
 
+/*
+ * Construct a file URL from directory and filename.  Either may
+ * be nil.  If both are nil, returns nil.
+ */
+#if MAC_OS_X_VERSION_MIN_REQUIRED > 1050
+static NSURL *getFileURL(NSString *directory, NSString *filename) {
+    NSURL *url = nil;
+    if (directory) {
+	url = [NSURL fileURLWithPath:directory isDirectory:YES];
+    }
+    if (filename) {
+	url = [NSURL URLWithString:filename relativeToURL:url];
+    }
+    return url;
+}
+#endif
+ 
 
 #pragma mark TKApplication(TKDialog)
 
@@ -538,7 +555,6 @@
 	    if (len) {
 		filename = [[[NSString alloc] initWithUTF8String:str]
 			autorelease];
-	       	[openpanel setNameFieldStringValue:filename];
 	    }
 	    break;
 	case OPEN_MESSAGE:
@@ -572,12 +588,13 @@
 	}
     }
 
-    /* From OSX 10.11, the title string is silently ignored.
-     * Prepend the title to the message
-     * NOTE should be conditional on OSX version, but
-     * -mmacosx-version-min does not revert this behaviour*/
     if (title) {
 	[openpanel setTitle:title];
+
+	/* From OSX 10.11, the title string is silently ignored in the open panel.
+	 * Prepend the title to the message in this case
+	 * NOTE should be conditional on OSX version, but
+	 * -mmacosx-version-min does not revert this behaviour*/
 	if (message) {
 	    NSString *fullmessage = [[NSString alloc] initWithFormat:@"%@\n%@",title,message];
 	    [message release];
@@ -659,15 +676,11 @@
 		   @selector(tkFilePanelDidEnd:returnCode:contextInfo:)
 	       contextInfo:callbackInfo];
 #else
-	if (directory) {
-	    [openpanel setDirectoryURL:[NSURL fileURLWithPath:directory isDirectory:YES]];
-	}
-	/*check for file name, otherwise set to empty string; crashes with uncaught exception if set to nil*/
-	if (filename) {
-	[openpanel setNameFieldStringValue:filename];
-	} else {
-	    [openpanel setNameFieldStringValue:@""];
+	if (directory || filename ) {
+	    NSURL * fileURL = getFileURL(directory, filename);
+	    [openpanel setDirectoryURL:fileURL];
 	}
+	
 	[openpanel beginSheetModalForWindow:parent
 	       completionHandler:^(NSInteger returnCode)
 	       { [NSApp tkFilePanelDidEnd:openpanel
@@ -680,16 +693,11 @@
 	modalReturnCode = [openpanel runModalForDirectory:directory
 				 file:filename];
 #else
-	if (directory) {
-	    [openpanel setDirectoryURL:[NSURL fileURLWithPath:directory isDirectory:YES]];
-	}
-	/*check for file name, otherwise set to empty string; crashes with uncaught exception if set to nil*/
-	if (filename) {
-	    [openpanel setNameFieldStringValue:filename];
-	} else {
-	    [openpanel setNameFieldStringValue:@""];
+	if (directory || filename ) {
+	    NSURL * fileURL = getFileURL(directory, filename);
+	    [openpanel setDirectoryURL:fileURL];
 	}
-
+	
 	modalReturnCode = [openpanel runModal];
 #endif
 	[NSApp tkFilePanelDidEnd:openpanel returnCode:modalReturnCode
@@ -827,19 +835,26 @@
 		break;
 	}
     }
-
+    
     if (title) {
 	[savepanel setTitle:title];
-	if (message) {
-	    NSString *fullmessage = [[NSString alloc] initWithFormat:@"%@\n%@",title,message];
-	    [message release];
-	    [title release];
-	    message = fullmessage;
-	} else {
-	    message = title;
+
+	/* From OSX 10.11, the title string is silently ignored, if the save panel is a sheet.
+	 * Prepend the title to the message in this case
+	 * NOTE should be conditional on OSX version, but
+	 * -mmacosx-version-min does not revert this behaviour*/
+	if (haveParentOption) {
+	    if (message) {
+		NSString *fullmessage = [[NSString alloc] initWithFormat:@"%@\n%@",title,message];
+		[message release];
+		[title release];
+		message = fullmessage;
+	    } else {
+		message = title;
+	    }
 	}
     }
-
+    
     if (message) {
 	[savepanel setMessage:message];
 	[message release];
