Tcl Source Code

Artifact [6e3aeb0592]
Login

Artifact 6e3aeb0592157fb8146b2fd127b6d1a537856be2:

Attachment "None" to ticket [402472ffff] added by pgbaum 2000-11-22 17:23:40.
Items in a canvas, which is embedded in another canvas, are
clipped by the inner canvas. This clipping is not done in
postscript output of the outer canvas.

tk-version: 
diff is against 8.4a2; bug is also in 8.0 and 8.3 (Windows
and Linux)

reproducible script:
canvas .outer -bg red -width 120 -height 120
pack .outer
canvas .inner -bg white -width 100 -height 100
.outer create window 10 10 -anchor nw -window .inner
.inner create oval -5 -5 105 105 -fill blue
update
.outer postscript -file qqq.ps

result:
in the postscript file the oval is an oval.

desired result:
The oval should have (due to the clipping) corners as
in the screen view.


This patch works for me. I'm not a postscript expert. Could
someone with more knowledge look, if this is the right way 
and place to do it?

Second: outer is not drawn in red in the ps-file. I have 
not yet a patch for this.


--- tkCanvWind.orig.c	Wed Nov  8 22:01:28 2000
+++ tkCanvWind.c	Thu Nov  9 20:18:11 2000
@@ -875,6 +875,11 @@
     Tcl_DStringFree(&buffer2);
 
     if (result == TCL_OK) {
+	sprintf (buffer,
+		"0 %d moveto %d 0 rlineto 0 -%d rlineto -%d",
+		height, width, height, width);
+	Tcl_AppendResult(interp, buffer, 
+                " 0 rlineto closepath clip newpath\n", (char *) NULL);
 	Tcl_AppendResult(interp,
 		"50 dict begin\nsave\ngsave\n",
 		(char *) NULL);