home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #20 / NN_1992_20.iso / spool / comp / lang / tcl / 1322 < prev    next >
Encoding:
Internet Message Format  |  1992-09-08  |  2.8 KB

  1. Path: sparky!uunet!cis.ohio-state.edu!ucbvax!ansa.co.uk!eo
  2. From: eo@ansa.co.uk (Ed Oskiewicz)
  3. Newsgroups: comp.lang.tcl
  4. Subject: Bug in menus of radio buttons
  5. Message-ID: <9209081508.AA22137@caligula.ansa.co.uk>
  6. Date: 8 Sep 92 15:08:14 GMT
  7. Sender: daemon@ucbvax.BERKELEY.EDU
  8. Lines: 80
  9.  
  10.  
  11. The little program below exercises a bug in tk menus.
  12.  
  13. What I'm trying to do is have two menus each with identical contents which are
  14. to operate independantly. I have made each entry a radio button (because it
  15. seemed like a good idea at the time) as I wanted to remind the user what the
  16. current selection was.
  17.  
  18. The bug is that you have two menus with identical contents then they behave as
  19. though you had two menu buttons onto the same menu.
  20.  
  21. To see this run the script below, it will produce a pair of menu buttons each
  22. of which lists all objects in your current directory.
  23.  
  24. if you select an entry in one button it changes the text in the menu button
  25. and highlights the entry selected. Now if you select the other button you find
  26. it's menu has the PREVIOUS SELECTION already highlighted. If you make a new
  27. selection and switch back to the first button then it shows your new selection
  28. already highlighted. I.e. the two buttons behave as though they are sharing a
  29. menu when I would expect each menu to operate independently.
  30.  
  31. The behaviour I would expect is manifested if I make the menu entries
  32. textually different, to see this go to the for loop and comment out the first
  33. AddDMenuItem and enable the second - note I've added a space before each
  34. directory name.
  35.  
  36. N.B. this has been abstracted from a larger script with unwanted detail
  37. excised  hence the apparent verbosity.
  38.  
  39. Can anyone shed some light on this behaviour?
  40.  
  41. ------ cut here --------
  42. #!/usr/local/wish -f
  43.  
  44. frame .f1    -relief raised
  45. frame .f2    -relief raised
  46.  
  47. pack append .    .f1 {top expand fill} .f2 {top expand fill}
  48.  
  49. proc AddMB {f} {
  50.   menubutton $f.fm -menu $f.fm.m -borderwidth 2 -relief raised
  51.   menu $f.fm.m
  52.   pack append $f $f.fm {left fill expand}
  53. }
  54.  
  55. proc Label {s m l} {
  56.   $m configure -text "$s: $l"
  57. }
  58.  
  59. proc AddDMenuItem {m l} {
  60.   $m.m add radio -label $l -command "Label \"First Folder \" $m $l"
  61. }
  62.  
  63. proc AddCMenuItem {m l} {
  64.   $m.m add radio -label $l -command "Label \"Second Folder \" $m $l"
  65. }
  66.  
  67. # Create the menu buttons, and provide initial labels
  68. AddMB .f1
  69. AddMB .f2
  70.  
  71. Label "1st button" .f1.fm "<none>"
  72. Label "2nd button" .f2.fm "<none>"
  73. # I would expect each radio button menu to operate separately, but they don't
  74. # The commented out line gives the behaviour I would expect
  75.  
  76. foreach i [exec ls -1] {
  77.   AddDMenuItem .f1.fm $i
  78. #  AddDMenuItem .f1.fm " $i"
  79.   AddCMenuItem .f2.fm $i
  80. }
  81. ------ cut here --------
  82. Cheers,
  83.  
  84. Ed Oskiewicz
  85.  
  86. email:    eo@ansa.co.uk (mcsun!uknet!ansa!eo)    ANSA,
  87. tel:    +44 223 323 010                Poseidon House,
  88. fax:    +44 223 359 779                Castle Park,
  89.                         Cambridge CB3 0RD, UK
  90.