*** blt-1.7/src/bltDragDrop.c	Thu Apr 14 22:11:03 1994
--- src/bltDragDrop.c	Fri Jul  8 17:09:46 1994
***************
*** 676,681 ****
--- 676,682 ----
  
  			if (dsPtr->button > 0)
  			{
+ #ifdef ORIGINAL_CODE
  				sprintf(buffer,
  					"bind %.100s <ButtonPress-%d> {%s drag %.100s %%X %%Y}; \
  					bind %.100s <B%d-Motion> {%s drag %.100s %%X %%Y}; \
***************
*** 683,689 ****
  					argv[2], dsPtr->button, DRAGDROP_COMMAND, argv[2],
  					argv[2], dsPtr->button, DRAGDROP_COMMAND, argv[2],
  					argv[2], dsPtr->button, DRAGDROP_COMMAND, argv[2]);
! 
  				if (Tcl_Eval(interp, buffer) != TCL_OK)
  				{
  					Tk_DestroyWindow(tokenwin);
--- 684,699 ----
  					argv[2], dsPtr->button, DRAGDROP_COMMAND, argv[2],
  					argv[2], dsPtr->button, DRAGDROP_COMMAND, argv[2],
  					argv[2], dsPtr->button, DRAGDROP_COMMAND, argv[2]);
! #else
! 				sprintf(buffer,
! "(begin \
!    (bind %.100s \"<ButtonPress-%d>\" '(%s 'drag %.100s |%%X| |%%Y|)) \
!    (bind %.100s \"<B%d-Motion>\" '(%s 'drag %.100s |%%X| |%%Y|)) \
!    (bind %.100s \"<ButtonRelease-%d>\" '(%s 'drop %.100s |%%X| |%%Y|)))",
! 					argv[2], dsPtr->button, DRAGDROP_COMMAND, argv[2],
! 					argv[2], dsPtr->button, DRAGDROP_COMMAND, argv[2],
! 					argv[2], dsPtr->button, DRAGDROP_COMMAND, argv[2]);
! #endif
  				if (Tcl_Eval(interp, buffer) != TCL_OK)
  				{
  					Tk_DestroyWindow(tokenwin);
***************
*** 887,893 ****
--- 897,908 ----
  			 */
  			dsPtr->pkgcmdInProg = ~0;
  			status = Tcl_VarEval(dsPtr->ddlist->interp,
+ #ifdef ORIGINAL_CODE
  				dsPtr->pkgcmd, " ", Tk_PathName(dsPtr->tokenwin),
+ #else
+ 				"(", dsPtr->pkgcmd, " '", 
+ 				Tk_PathName(dsPtr->tokenwin), ")",
+ #endif
  				(char*)NULL);
  			dsPtr->pkgcmdInProg = 0;
  
***************
*** 914,920 ****
--- 929,939 ----
  				if (ddlist->errorProc && *ddlist->errorProc)
  				{
  					return Tcl_VarEval(ddlist->interp,
+ #ifdef ORIGINAL_CODE
  						ddlist->errorProc, " {", ddlist->interp->result, "}",
+ #else
+ 						"(", ddlist->errorProc, " ", (char *) STk_Stringify(ddlist->interp->result, 0), ")",
+ #endif
  						(char*)NULL);
  				}
  				else
***************
*** 927,933 ****
--- 946,956 ----
  			if (dsPtr->tokenCursor != None)
  			{
  				status = Tcl_VarEval(dsPtr->ddlist->interp,
+ #ifdef ORIGINAL_CODE
  					Tk_PathName(dsPtr->tkwin), " config -cursor",
+ #else
+ 				        "(", Tk_PathName(dsPtr->tkwin), " 'config :cursor)",
+ #endif
  					(char*)NULL);
  
  				if (status == TCL_OK)
***************
*** 1690,1696 ****
--- 1713,1723 ----
  
  		sprintf(buffer, "%d %d", dsPtr->tokenx, dsPtr->tokeny);
  		status = Tcl_VarEval(ddlist->interp,
+ #ifdef ORIGINAL_CODE
  			"send {",target->ddinterp,"} ", DRAGDROP_COMMAND," location ",buffer,
+ #else
+ 			"(send ",target->ddinterp," '(", DRAGDROP_COMMAND," 'location ",buffer,"))", 
+ #endif
  			(char*)NULL);
  
  		if (status == TCL_OK)
***************
*** 1699,1706 ****
--- 1726,1738 ----
  			if (sendcmd)
  			{
  				status = Tcl_VarEval(ddlist->interp,
+ #ifdef ORIGINAL_CODE
  					sendcmd, " {",target->ddinterp,"} {",target->ddwin,
  					"} {",dsPtr->pkgcmdResult,"}",
+ #else
+ 					"(", sendcmd, " ",target->ddinterp," '",target->ddwin,
+ 					" '",dsPtr->pkgcmdResult,")",
+ #endif						     
  					(char*)NULL);
  			}
  			else
***************
*** 1727,1733 ****
--- 1759,1770 ----
  
  			if (ddlist->errorProc && *ddlist->errorProc)
  				(void) Tcl_VarEval(ddlist->interp,
+ #ifdef ORIGINAL_CODE
  					ddlist->errorProc, " {", ddlist->interp->result, "}",
+ #else
+ 					"(", ddlist->errorProc, " ", 
+ 					 (char *) STk_Stringify(ddlist->interp->result, 0), ")",
+ #endif
  					(char*)NULL);
  		}
  	}
***************
*** 1762,1772 ****
  	 */
  	Tcl_ResetResult(interp); /* for Tcl_AppendResult() below */
  	if (Tcl_VarEval(interp,
  		"send {",interpName,"} ", DRAGDROP_COMMAND," target {",ddName,"} handler",
  		(char*)NULL) != TCL_OK)
  		return NULL;
! 
  	hlist = strdup(interp->result);
  	if (Tcl_SplitList(interp, hlist, &hndlc, &hndlv) == TCL_OK)
  	{
  		/*
--- 1799,1826 ----
  	 */
  	Tcl_ResetResult(interp); /* for Tcl_AppendResult() below */
  	if (Tcl_VarEval(interp,
+ #ifdef ORIGINAL_CODE
  		"send {",interpName,"} ", DRAGDROP_COMMAND," target {",ddName,"} handler",
+ #else
+ 		"(send ",interpName," '(", DRAGDROP_COMMAND," 'target '",ddName," 'handler))",
+ #endif
  		(char*)NULL) != TCL_OK)
  		return NULL;
! #ifdef ORIGINAL_CODE
  	hlist = strdup(interp->result);
+ #else
+ 	/* DIRTY HACKS..... But I don't know how to make it work better */
+ 	/* Result of send is always a string in STk. So there are '"' to delete */
+ 	/* Furthermore, The STk Tcl_SplitList doesn't handle very well lists */
+ 	if (*(interp->result)) {
+ 	  int x = ((interp->result)[1]) == '('? 2: 1;
+ 
+ 	  hlist = strdup(interp->result + x);
+ 	  hlist[strlen(hlist)-x] = '\0';
+ 	}
+ 	else 
+ 	  hlist = strdup(interp->result);
+ #endif
  	if (Tcl_SplitList(interp, hlist, &hndlc, &hndlv) == TCL_OK)
  	{
  		/*
***************
*** 2117,2123 ****
--- 2171,2181 ----
  			char *p = wr->ddprop;
  			wr->ddinterp = wr->ddprop;
  
+ #ifdef ORIGINAL_CODE
  			while ((*p != '\0') && (*p != ']'))
+ #else
+ 			while ((*p != '\0') && (*p != '}'))
+ #endif
  				p++;
  
  			if (*p != '\0')
***************
*** 2126,2132 ****
--- 2184,2194 ----
  				wr->ddwin = p;       /* get start of window name */
  			}
  
+ #ifdef ORIGINAL_CODE
  			while ((*p != '\0') && (*p != ']'))
+ #else
+ 			while ((*p != '\0') && (*p != '}'))
+ #endif
  				p++;
  
  			if (*p != '\0')
***************
*** 2201,2213 ****
--- 2263,2286 ----
  
  	if (dtPtr->tkwin != None)
  	{
+ #ifdef ORIGINAL_CODE
  		static char command[] = { "winfo name ." };
+ #else
+ 		static char command[] = { "(winfo 'name *root*)" };
+ #endif
  
  		path = Tk_PathName(dtPtr->tkwin);
+ #ifdef ORIGINAL_CODE
  		if (Tcl_Eval(interp, command)==TCL_OK)
  			sprintf(buffer, "%s]%s]", interp->result, path);
  		else
  			sprintf(buffer, "]%s]", path);
+ #else
+ 		if (Tcl_Eval(interp, command)==TCL_OK)
+ 			sprintf(buffer, "%s}%s}", interp->result, path);
+ 		else
+ 			sprintf(buffer, "}%s}", path);
+ #endif
  
  		Tcl_SetResult(interp, buffer, TCL_VOLATILE);
  		for (thandl=dtPtr->handlers; thandl; thandl=thandl->next)
***************
*** 2383,2395 ****
--- 2456,2477 ----
  
  			sprintf(buffer, "%d", status);
  			if ((Tcl_VarEval(dsPtr->ddlist->interp,
+ #ifdef ORIGINAL_CODE
  					dsPtr->sitecmd," ",buffer," ",Tk_PathName(dsPtr->tokenwin),
+ #else
+ 					"(", dsPtr->sitecmd," ",buffer," '",Tk_PathName(dsPtr->tokenwin), ")",
+ #endif
  					(char*)NULL) != TCL_OK) &&
  				dsPtr->ddlist->errorProc && *dsPtr->ddlist->errorProc)
  
  				(void) Tcl_VarEval(dsPtr->ddlist->interp,
+ #ifdef ORIGINAL_CODE
  					dsPtr->ddlist->errorProc, " {",
  					dsPtr->ddlist->interp->result, "}",
+ #else
+ 					"(", dsPtr->ddlist->errorProc, " ",
+ 					 (char *) STk_Stringify(dsPtr->ddlist->interp->result, 0), ")",
+ #endif
  					(char*)NULL);
  		}
  	}
