Subject: Additional tweaks for dialog

From: Kevin Walzer <[email-masked]>
Date: Mon, 11 Jan 2016 00:45:56 +0000

---
 macosx/tkMacOSXDialog.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/macosx/tkMacOSXDialog.c b/macosx/tkMacOSXDialog.c
index 4ceb010..6af6b33 100644
--- a/macosx/tkMacOSXDialog.c
+++ b/macosx/tkMacOSXDialog.c
@@ -398,6 +398,7 @@ Tk_GetOpenFileObjCmd(
 
     TkInitFileFilters(&fl);
     for (i = 1; i < objc; i += 2) {
+    BOOL parentIsKey = NO;
 	if (Tcl_GetIndexFromObjStruct(interp, objv[i], openOptionStrings,
 		sizeof(char *), "option", TCL_EXACT, &index) != TCL_OK) {
 	    goto end;
@@ -513,6 +514,7 @@ Tk_GetOpenFileObjCmd(
 #if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
 	[panel beginSheetForDirectory:directory
 	       file:filename
+	    parentIsKey = [parent isKeyWindow];
 	       types:fileTypes
 	       modalForWindow:parent
 	       modalDelegate:NSApp
@@ -544,6 +546,9 @@ Tk_GetOpenFileObjCmd(
     if (typeVariablePtr && result == TCL_OK) {
 	/*
 	 * The -typevariable option is not really supported.
+    if (parentIsKey) {
+	[parent makeKeyWindow];
+    }
 	 */
 
 	Tcl_SetVar2(interp, Tcl_GetString(typeVariablePtr), NULL,
@@ -596,6 +601,7 @@ Tk_GetSaveFileObjCmd(
 
     TkInitFileFilters(&fl);
     for (i = 1; i < objc; i += 2) {
+    BOOL parentIsKey = NO;
 	if (Tcl_GetIndexFromObjStruct(interp, objv[i], saveOptionStrings,
 		sizeof(char *), "option", TCL_EXACT, &index) != TCL_OK) {
 	    goto end;
@@ -712,6 +718,7 @@ Tk_GetSaveFileObjCmd(
 #if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
 	[panel beginSheetForDirectory:directory
 	       file:filename
+       parentIsKey = [parent isKeyWindow];
 	       modalForWindow:parent
 	       modalDelegate:NSApp
 	       didEndSelector:
@@ -737,7 +744,9 @@ Tk_GetSaveFileObjCmd(
 		contextInfo:callbackInfo];
     }
     result = (modalReturnCode != modalError) ? TCL_OK : TCL_ERROR;
-
+    if (parentIsKey) {
+	[parent makeKeyWindow];
+    }
   end:
     TkFreeFileFilters(&fl);
     return result;
@@ -780,6 +789,7 @@ Tk_ChooseDirectoryObjCmd(
     NSWindow *parent;
     NSOpenPanel *panel = [NSOpenPanel openPanel];
     NSInteger modalReturnCode = modalError;
+    BOOL parentIsKey = NO;
 
     for (i = 1; i < objc; i += 2) {
 	if (Tcl_GetIndexFromObjStruct(interp, objv[i], chooseOptionStrings,
@@ -847,6 +857,7 @@ Tk_ChooseDirectoryObjCmd(
     callbackInfo->multiple = 0;
     parent = TkMacOSXDrawableWindow(((TkWindow *) tkwin)->window);
     if (haveParentOption && parent && ![parent attachedSheet]) {
+      parentIsKey = [parent isKeyWindow];
 #if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
 	[panel beginSheetForDirectory:directory
 		file:filename
@@ -874,7 +885,9 @@ Tk_ChooseDirectoryObjCmd(
 		contextInfo:callbackInfo];
     }
     result = (modalReturnCode != modalError) ? TCL_OK : TCL_ERROR;
-
+    if (parentIsKey) {
+	[parent makeKeyWindow];
+    }
   end:
     return result;
 }
-- 
cgit v0.12