summaryrefslogtreecommitdiff
path: root/tk/mac/tkMacHLEvents.c
diff options
context:
space:
mode:
Diffstat (limited to 'tk/mac/tkMacHLEvents.c')
-rw-r--r--tk/mac/tkMacHLEvents.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/tk/mac/tkMacHLEvents.c b/tk/mac/tkMacHLEvents.c
index 02708c0d634..69d1610ab33 100644
--- a/tk/mac/tkMacHLEvents.c
+++ b/tk/mac/tkMacHLEvents.c
@@ -228,13 +228,11 @@ OdocHandler(
}
Tcl_DStringInit(&command);
- Tcl_DStringInit(&pathName);
Tcl_DStringAppend(&command, "tkOpenDocument", -1);
for (index = 1; index <= count; index++) {
int length;
Handle fullPath;
- Tcl_DStringSetLength(&pathName, 0);
err = AEGetNthPtr(&fileSpecList, index, typeFSS,
&keyword, &type, (Ptr) &file, sizeof(FSSpec), &actual);
if ( err != noErr ) {
@@ -243,17 +241,17 @@ OdocHandler(
err = FSpPathFromLocation(&file, &length, &fullPath);
HLock(fullPath);
- Tcl_DStringAppend(&pathName, *fullPath, length);
+ Tcl_ExternalToUtfDString(NULL, *fullPath, length, &pathName);
HUnlock(fullPath);
DisposeHandle(fullPath);
- Tcl_DStringAppendElement(&command, pathName.string);
+ Tcl_DStringAppendElement(&command, Tcl_DStringValue(&pathName));
+ Tcl_DStringFree(&pathName);
}
- Tcl_GlobalEval(interp, command.string);
+ Tcl_GlobalEval(interp, Tcl_DStringValue(&command));
Tcl_DStringFree(&command);
- Tcl_DStringFree(&pathName);
return noErr;
}
@@ -312,6 +310,7 @@ ScriptHandler(
theErr = -1771;
} else {
if (theDesc.descriptorType == (DescType)'TEXT') {
+ Tcl_DString encodedText;
short length, i;
length = GetHandleSize(theDesc.dataHandle);
@@ -324,7 +323,10 @@ ScriptHandler(
}
HLock(theDesc.dataHandle);
- tclErr = Tcl_GlobalEval(interp, *theDesc.dataHandle);
+ Tcl_ExternalToUtfDString(NULL, *theDesc.dataHandle, length,
+ &encodedText);
+ tclErr = Tcl_GlobalEval(interp, Tcl_DStringValue(&encodedText));
+ Tcl_DStringFree(&encodedText);
HUnlock(theDesc.dataHandle);
} else if (theDesc.descriptorType == (DescType)'alis') {
Boolean dummy;
@@ -361,10 +363,12 @@ ScriptHandler(
if (tclErr >= 0) {
if (tclErr == TCL_OK) {
AEPutParamPtr(reply, keyDirectObject, typeChar,
- interp->result, strlen(interp->result));
+ Tcl_GetStringResult(interp),
+ strlen(Tcl_GetStringResult(interp)));
} else {
AEPutParamPtr(reply, keyErrorString, typeChar,
- interp->result, strlen(interp->result));
+ Tcl_GetStringResult(interp),
+ strlen(Tcl_GetStringResult(interp)));
AEPutParamPtr(reply, keyErrorNumber, typeInteger,
(Ptr) &tclErr, sizeof(int));
}
@@ -435,3 +439,4 @@ MissedAnyParameters(
return (err != errAEDescNotFound);
}
+