home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / lang / tcl / 1221 < prev    next >
Encoding:
Internet Message Format  |  1992-08-19  |  2.6 KB

  1. Path: sparky!uunet!charon.amdahl.com!pacbell.com!mips!swrinde!elroy.jpl.nasa.gov!ames!agate!sprite.Berkeley.EDU!ouster
  2. From: ouster@sprite.Berkeley.EDU (John Ousterhout)
  3. Newsgroups: comp.lang.tcl
  4. Subject: Re: canvas problem
  5. Message-ID: <16tqdfINNhf0@agate.berkeley.edu>
  6. Date: 19 Aug 92 15:46:55 GMT
  7. References: <1992Aug18.023804.25826@Arco.COM>
  8. Organization: U.C. Berkeley Sprite Project
  9. Lines: 62
  10. NNTP-Posting-Host: tyranny.berkeley.edu
  11.  
  12. In article <1992Aug18.023804.25826@Arco.COM>, cgp@Arco.COM (Chris Phillips  (214) 754-6419) writes:
  13. |> For some reason the following script doesn't give the expected results.
  14. |> It creates two canvases: one horizontal and one vertical.  They should
  15. |> each create 10 squares, all in a row.  The horizontal canvas is ok, but
  16. |> only 2 squares show up in the vertical canvas.
  17. |> 
  18. |> 
  19. |> #!/usr/local/bin/wish -f
  20. |> 
  21. |> proc trash {w doy} {
  22. |>         toplevel $w
  23. |>         if {$doy == 1} {
  24. |>                 canvas $w.c -width 1c -height 10c
  25. |>                 $w.c create rectangle 0 0 1c 10c -fill red
  26. |>                 for {set j 1} {$j <= 10} {incr j} {
  27. |>                         $w.c create rectangle \
  28. |>                           0 [expr $j-1]c 1c ${j}c \
  29. |>                           -outline black -fill blue
  30. |>                 }
  31. |>         } else {
  32. |>                 canvas $w.c -width 10c -height 1c
  33. |>                 $w.c create rectangle 0 0 10c 1c -fill red
  34. |>                 for {set i 1} {$i <= 10} {incr i} {
  35. |>                         $w.c create rectangle \
  36. |>                           [expr $i-1]c 0 ${i}c 1c \
  37. |>                           -outline black -fill blue
  38. |>                 }
  39. |>         }
  40. |> 
  41. |>         pack append $w $w.c {expand fill}
  42. |> }
  43. |> 
  44. |> trash .t0 0
  45. |> trash .t1 1
  46. |> message .m -text "Horizontal: 10 blue squares\nVertical: 2 blue squares" \
  47. |>   -aspect 1500 -justify center
  48. |> pack append . .m {expand fill}
  49. |> 
  50. |>
  51.  
  52. Oops. There's a bug in tkCanvas.c that's causing the lower boxes not to
  53. be redisplayed properly.  Here is a patch to fix the problem:
  54.  
  55. *** tkCanvas.orig    Wed Aug 19 08:45:10 1992
  56. --- tkCanvas.c    Wed Aug 19 08:45:38 1992
  57. ***************
  58. *** 1546,1552 ****
  59.       screenX1 = canvasPtr->xOrigin;
  60.       screenY1 = canvasPtr->yOrigin;
  61.       screenX2 = screenX1 + Tk_Width(tkwin);
  62. !     screenY2 = screenY1 + Tk_Width(tkwin);
  63.       if (canvasPtr->redrawX1 > screenX1) {
  64.       screenX1 = canvasPtr->redrawX1;
  65.       }
  66. --- 1546,1552 ----
  67.       screenX1 = canvasPtr->xOrigin;
  68.       screenY1 = canvasPtr->yOrigin;
  69.       screenX2 = screenX1 + Tk_Width(tkwin);
  70. !     screenY2 = screenY1 + Tk_Height(tkwin);
  71.       if (canvasPtr->redrawX1 > screenX1) {
  72.       screenX1 = canvasPtr->redrawX1;
  73.       }
  74.