1# This file is a Tcl script to test menus in Tk.  It is
2# organized in the standard fashion for Tcl tests. This
3# file tests the Macintosh-specific features of the menu
4# system.
5#
6# Copyright (c) 1995-1997 Sun Microsystems, Inc.
7# Copyright (c) 1998-1999 by Scriptics Corporation.
8# All rights reserved.
9#
10# RCS: @(#) $Id: macMenu.test,v 1.7 2002/07/13 20:28:35 dgp Exp $
11
12package require tcltest 2.1
13namespace import -force tcltest::configure
14namespace import -force tcltest::testsDirectory
15configure -testdir [file join [pwd] [file dirname [info script]]]
16configure -loadfile [file join [testsDirectory] constraints.tcl]
17tcltest::loadTestedCommands
18
19test macMenu-1.0 {TkMacUseMenuID} {macOnly} {
20    # Can't really test TkMacUseMenuID; it's only called on startup.
21} {}
22
23test macMenu-2.1 {GetNewID} {macOnly} {
24    catch {destroy .m1}
25    list [catch {menu .m1} msg] $msg [destroy .m1]
26} {0 .m1 {}}
27test macMenu-2.2 {GetNewID - cascade menu} {macOnly} {
28    catch {destroy .m1}
29    menu .m1
30    .m1 add cascade -menu .m2
31    list [catch {menu .m2} msg] $msg [destroy .m1] [destroy .m2]
32} {0 .m2 {} {}}
33test macMenu-2.3 {GetNewID - running out of ids} {macOnly} {
34    deleteWindows
35    menu .menu
36    for {set i 0} {$i < 230} {incr i} {
37    	menu .m$i
38    	.menu add cascade -label ".m$i" -menu .m$i
39    }
40    menu .breaker
41    list [catch {.menu add cascade -menu .breaker} msg] $msg [deleteWindows]
42} {1 {No more menus can be allocated.} {}}
43
44test macMenu-3.1 {FreeID} {macOnly} {
45    catch {destroy .m1}
46    menu .m1
47    list [catch {destroy .m1} msg] $msg
48} {0 {}}
49
50# No way to test running out of ids in TkpNewPlatformMenu
51test macMenu-4.1 {TkpNewMenu} {macOnly} {
52    catch {destroy .m1}
53    list [catch {menu .m1} msg] $msg [catch {destroy .m1} msg2] $msg2
54} {0 .m1 0 {}}
55test macMenu-4.2 {TkpNewMenu - checking for help menu when one is there} {macOnly} {
56    catch {destroy .m1}
57    catch {destroy .m2}
58    menu .m1
59    menu .m1.help -tearoff 0
60    .m1.help add command -label Test
61    . configure -menu .m1
62    raise .
63    update
64    list [catch {menu .m2} msg] $msg [destroy .m1] [destroy .m2] [. configure -menu ""]
65} {0 .m2 {} {} {}}
66test macMenu-4.3 {TkpNewMenu - menubar set but different interp} {macOnly} {
67    catch {interp delete testinterp}
68    catch {destroy .m1}
69    interp create testinterp
70    load {} Tk testinterp
71    interp eval testinterp {raise .}
72    interp eval testinterp {menu .m1}
73    interp eval testinterp {. configure -menu .m1}
74    interp eval testinterp {update}
75    list [catch {menu .m1} msg] $msg [destroy .m1] [interp delete testinterp]
76} {0 .m1 {} {}}
77test macMenu-4.4 {TkpNewMenu - menubar set but new menu has different parent} {macOnly} {
78    catch {destroy .m1}
79    catch {destroy .m2}
80    menu .m1 -tearoff 0
81    .m1 add cascade -menu .m1.help
82    menu .m2
83    .m2 add cascade -menu .m2.help
84    . configure -menu .m1
85    raise .
86    update
87    list [catch {menu .m2.help} msg] $msg [. configure -menu ""] [destroy .m1] [destroy .m2]
88} {0 .m2.help {} {} {}}
89test macMenu-4.5 {TkpNewMenu - menubar set, same parent, not .help} {macOnly} {
90    catch {destroy .m1}
91    menu .m1 -tearoff 0
92    .m1 add cascade -menu .m1.help
93    . configure -menu .m1
94    raise .
95    update
96    list [catch {menu .m1.foo} msg] $msg [. configure -menu ""] [destroy .m1]
97} {0 .m1.foo {} {}}
98test macMenu-4.6 {TkpNewMenu - creating the help menu} {macOnly} {
99    catch {destroy .m1}
100    menu .m1 -tearoff 0
101    .m1 add cascade -menu .m1.help
102    . configure -menu .m1
103    raise .
104    update
105    list [catch {menu .m1.help} msg] $msg [. configure -menu ""] [destroy .m1]
106} {0 .m1.help {} {}}
107
108test macMenu-5.1 {TkpDestroyMenu} {macOnly} {
109    catch {destroy .m1}
110    menu .m1
111    list [catch {destroy .m1} msg] $msg
112} {0 {}}
113test macMenu-5.2 {TkpDestroyMenu - help menu} {macOnly} {
114    catch {destroy .m1}
115    menu .m1 -tearoff 0
116    .m1 add cascade -menu .m1.help
117    . configure -menu .m1
118    menu .m1.help
119    raise .
120    update
121    list [catch {destroy .m1.help} msg] $msg [. configure -menu ""] [destroy .m1]
122} {0 {} {} {}}
123test macMenu-5.3 {TkpDestroyMenu - idle handler pending} {macOnly} {
124    catch {destroy .m1}
125    menu .m1
126    .m1 add command -label test
127    list [catch {destroy .m1} msg] $msg
128} {0 {}}
129test macMenu-5.4 {TkpDestroyMenu - idle handler not pending} {macOnly} {
130    catch {destroy .m1}
131    menu .m1
132    .m1 add command -label test
133    update idletasks
134    list [catch {destroy .m1} msg] $msg
135} {0 {}}
136
137test macMenu-6.1 {SetMenuCascade} {macOnly} {
138    catch {destroy .m1}
139    catch {destroy .m2}
140    menu .m1
141    menu .m2
142    list [catch {.m2 add cascade -menu .m1} msg] $msg [destroy .m1 .m2]
143} {0 {} {}}
144test macMenu-6.2 {SetMenuCascade - running out of ids} {macOnly} {
145    deleteWindows
146    menu .menu
147    for {set i 0} {$i < 230} {incr i} {
148    	menu .m$i
149    	.menu add cascade -label ".m$i" -menu .m$i
150    }
151    menu .breaker
152    list [catch {.menu add cascade -menu .breaker} msg] $msg [deleteWindows]
153} {1 {No more menus can be allocated.} {}}
154
155test macMenu-7.1 {TkpDestroyMenuEntry} {macOnly} {
156    catch {destroy .m1}
157    menu .m1
158    .m1 add command -label "test"
159    list [catch {.m1 delete 1} msg] $msg [destroy .m1]
160} {0 {} {}}
161test macMenu-7.2 {TkpDestroyMenuEntry - help menu} {macOnly} {
162    catch {destroy .m1}
163    menu .m1
164    .m1 add cascade -menu .m1.help
165    menu .m1.help -tearoff 0
166    .m1.help add command -label "test"
167    . configure -menu .m1
168    raise .
169    update
170    list [catch {.m1.help delete test} msg] $msg [. configure -menu ""] [destroy .m1]
171} {0 {} {} {}}
172
173test macMenu-8.1 {GetEntryText} {macOnly} {
174    catch {destroy .m1}
175    list [catch {menu .m1} msg] $msg [destroy .m1]
176} {0 .m1 {}}
177test macMenu-8.2 {GetEntryText} {macOnly testImageType} {
178    catch {destroy .m1}
179    catch {image delete image1}
180    menu .m1
181    image create test image1
182    list [catch {.m1 add command -image image1} msg] $msg [destroy .m1] [image delete image1]
183} {0 {} {} {}}
184test macMenu-8.3 {GetEntryText} {macOnly} {
185    catch {destroy .m1}
186    menu .m1
187    list [catch {.m1 add command -bitmap questhead} msg] $msg [destroy .m1]
188} {0 {} {}}
189test macMenu-8.4 {GetEntryText} {macOnly} {
190    catch {destroy .m1}
191    menu .m1
192    list [catch {.m1 add command} msg] $msg [destroy .m1]
193} {0 {} {}}
194test macMenu-8.5 {GetEntryText} {macOnly} {
195    catch {destroy .m1}
196    menu .m1
197    .m1 add command -label "foo"
198    list [catch {.m1 add command -label "foo"} msg] $msg [destroy .m1]
199} {0 {} {}}
200test macMenu-8.6 {GetEntryText} {macOnly} {
201    catch {destroy .m1}
202    menu .m1
203    list [catch {.m1 add command -label "This is a very long string. 9012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890"} \
204    	    msg] $msg [destroy .m1]
205} {0 {} {}}
206test macMenu-8.7 {GetEntryText - elipses character} {macOnly} {
207    catch {destroy .m1}
208    menu .m1
209    list [catch {.m1 add command -label "foo..."} msg] $msg [destroy .m1]
210} {0 {} {}}
211test macMenu-8.8 {GetEntryText - false elipses character} {macOnly} {
212    catch {destroy .m1}
213    menu .m1
214    list [catch {.m1 add command -label "foo."} msg] $msg [destroy .m1]
215} {0 {} {}}
216test macMenu-8.9 {GetEntryText - false elipses character} {macOnly} {
217    catch {destroy .m1}
218    menu .m1
219    list [catch {.m1 add command -label "foo.."} msg] $msg [destroy .m1]
220} {0 {} {}}
221test macMenu-8.10 {GetEntryText - false elipses character} {macOnly} {
222    catch {destroy .m1}
223    menu .m1
224    list [catch {.m1 add command -label "foo.b"} msg] $msg [destroy .m1]
225} {0 {} {}}
226test macMenu-8.11 {GetEntryText - false elipses character} {macOnly} {
227    catch {destroy .m1}
228    menu .m1
229    list [catch {.m1 add command -label "foo..b"} msg] $msg [destroy .m1]
230} {0 {} {}}
231
232
233# test macMenu-9.1 - assumes some fonts
234test macMenu-9.1 {FindMarkCharacter} {macOnly} {
235    catch {destroy .m1}
236    menu .m1 -font "Helvetica 12" -tearoff 0
237    .m1 add checkbutton -label test
238    .m1 invoke test
239    list [catch {update idletasks} msg] $msg [destroy .m1]
240} {0 {} {}}
241# All standard fonts have "�" defined. We can't test further.
242
243test macMenu-10.1 {SetMenuIndicator - cascade entry} {macOnly} {
244    catch {destroy .m1}
245    menu .m1
246    list [catch {.m1 add cascade -label foo} msg] $msg [destroy .m1]
247} {0 {} {}}
248test macMenu-10.2 {SetMenuIndicator - not radio or checkbutton} {macOnly} {
249    catch {destroy .m1}
250    menu .m1
251    list [catch {.m1 add command -label foo} msg] $msg [destroy .m1]
252} {0 {} {}}
253test macMenu-10.3 {SetMenuIndicator - indiatorOn false} {macOnly} {
254    catch {destroy .m1}
255    menu .m1
256    list [catch {.m1 add checkbutton -label foo -indicatoron 0} msg] $msg [destroy .m1]
257} {0 {} {}}
258test macMenu-10.4 {SetMenuIndicator - entry not selected} {macOnly} {
259    catch {destroy .m1}
260    menu .m1
261    list [catch {.m1 add checkbutton -label foo} msg] $msg [destroy .m1]
262} {0 {} {}}
263test macMenu-10.5 {SetMenuIndicator - checkbutton} {macOnly} {
264    catch {destroy .m1}
265    menu .m1
266    .m1 add checkbutton -label foo
267    list [catch {.m1 invoke foo} msg] $msg [destroy .m1]
268} {0 {} {}}
269test macMenu-10.6 {SetMenuIndicator - radio button} {macOnly} {
270    catch {destroy .m1}
271    menu .m1
272    .m1 add radiobutton -label foo
273    list [catch {.m1 invoke foo} msg] $msg [destroy .m1]
274} {0 {} {}}
275
276test macMenu-11.1 {SetMenuTitle} {macOnly} {
277    catch {destroy .m1}
278    catch {destroy .container}
279    menu .container
280    menu .m1
281#previous title is .m1
282    .container add cascade -label "File" -menu .m1
283    list [catch {. configure -menu .container} msg] $msg [. configure -menu ""] [destroy .container .m1]
284} {0 {} {} {}}
285test macMenu-11.2 {SetMenuTitle} {macOnly} {
286    menu .container
287    menu .m1
288    . configure -menu ""
289#previous title is .m1
290    .container add cascade -label "F" -menu .m1
291    list [catch {. configure -menu .container} msg] $msg [. configure -menu ""] [destroy .container .m1]
292} {0 {} {} {}}
293
294test macMenu-12.1 {TkpConfigureMenuEntry} {macOnly} {
295    catch {destroy .m1}
296    . configure -menu ""
297    menu .m1
298    .m1 add cascade -menu .m3
299    list [catch {.m1 entryconfigure 1 -menu .m2} msg] $msg [destroy .m1]
300} {0 {} {}}
301test macMenu-12.2 {TkpConfigureMenuEntry} {macOnly} {
302    catch {destroy .m1}
303    catch {destroy .m2}
304    . configure -menu ""
305    menu .m1
306    .m1 add cascade -menu .m3
307    menu .m2
308    list [catch {.m1 entryconfigure 1 -menu .m2} msg] $msg [destroy .m1 .m2]
309} {0 {} {}}
310test macMenu-12.3 {TkpConfigureMenuEntry - running out of ids} {macOnly} {
311    deleteWindows
312    menu .menu
313    for {set i 0} {$i < 230} {incr i} {
314    	menu .m$i
315    	.menu add cascade -label ".m$i" -menu .m$i
316    }
317    menu .breaker
318    list [catch {.menu add cascade -menu .breaker} msg] $msg [deleteWindows]
319} {1 {No more menus can be allocated.} {}}
320test macMenu-12.4 {TkpConfigureMenuEntry - Control} {macOnly} {
321    catch {destroy .m1}
322    menu .m1
323    list [catch {.m1 add command -accel "Control+S"} msg] $msg [destroy .m1]
324} {0 {} {}}
325test macMenu-12.5 {TkpConfigureMenuEntry - Ctrl} {macOnly} {
326    catch {destroy .m1}
327    menu .m1
328    list [catch {.m1 add command -accel "Ctrl+S"} msg] $msg [destroy .m1]
329} {0 {} {}}
330test macMenu-12.6 {TkpConfigureMenuEntry - Shift} {macOnly} {
331    catch {destroy .m1}
332    menu .m1
333    list [catch {.m1 add command -accel "Shift+S"} msg] $msg [destroy .m1]
334} {0 {} {}}
335test macMenu-12.7 {TkpConfigureMenuEntry - Option} {macOnly} {
336    catch {destroy .m1}
337    menu .m1
338    list [catch {.m1 add command -accel "Opt+S"} msg] $msg [destroy .m1]
339} {0 {} {}}
340test macMenu-12.8 {TkpConfigureMenuEntry - Command} {macOnly} {
341    catch {destroy .m1}
342    menu .m1
343    list [catch {.m1 add command -accel "Command+S"} msg] $msg [destroy .m1]
344} {0 {} {}}
345test macMenu-12.9 {TkpConfigureMenuEntry - Cmd} {macOnly} {
346    catch {destroy .m1}
347    menu .m1
348    list [catch {.m1 add command -accel "Cmd+S"} msg] $msg [destroy .m1]
349} {0 {} {}}
350test macMenu-12.10 {TkpConfigureMenuEntry - Alt} {macOnly} {
351    catch {destroy .m1}
352    menu .m1
353    list [catch {.m1 add command -accel "Alt+S"} msg] $msg [destroy .m1]
354} {0 {} {}}
355test macMenu-12.11 {TkpConfigureMenuEntry - Meta} {macOnly} {
356    catch {destroy .m1}
357    menu .m1
358    list [catch {.m1 add command -accel "Meta+S"} msg] $msg [destroy .m1]
359} {0 {} {}}
360test macMenu-12.12 {TkpConfigureMenuEntry - Two modifiers} {macOnly} {
361    catch {destroy .m1}
362    menu .m1
363    list [catch {.m1 add command -accel "Cmd+Shift+S"} msg] $msg [destroy .m1]
364} {0 {} {}}
365test macMenu-12.13 {TkpConfigureMenuEntry - dash instead of plus} {macOnly} {
366    catch {destroy .m1}
367    menu .m1
368    list [catch {.m1 add command -accel "Command-S"} msg] $msg [destroy .m1]
369} {0 {} {}}
370test macMenu-12.14 {TkpConfigureMenuEntry - idler pending} {macOnly} {
371    catch {destroy .m1}
372    menu .m1 -tearoff 0
373    .m1 add command -label test
374    list [catch {.m1 entryconfigure test -label test2} msg] $msg [destroy .m1]
375} {0 {} {}}
376test macMenu-12.15 {TkpConfigureMenuEntry - idler not pending} {macOnly} {
377    catch {destroy .m1}
378    menu .m1 -tearoff 0
379    .m1 add command -label test
380    update idletasks
381    list [catch {.m1 entryconfigure test -label test2} msg] $msg [destroy .m1]
382} {0 {} {}}
383
384test macMenu-13.1 {ReconfigureIndividualMenu - getting rid of zero items} {macOnly} {
385    catch {destroy .m1}
386    menu .m1 -tearoff 0
387    .m1 add command -label test
388    list [catch {update idletasks} msg] $msg [destroy .m1]
389} {0 {} {}}
390test macMenu-13.2 {ReconfigureIndividualMenu - getting rid of one item} {macOnly} {
391    catch {destroy .m1}
392    menu .m1 -tearoff 0
393    .m1 add command -label test
394    update idletasks
395    .m1 delete test
396    list [catch {update idletasks} msg] $msg [destroy .m1]
397} {0 {} {}}
398test macMenu-13.3 {ReconfigureIndividualMenu - getting rid of more than one} {macOnly} {
399    catch {destroy .m1}
400    menu .m1 -tearoff 0
401    .m1 add command -label test
402    .m1 add command -label test2
403    update idletasks
404    .m1 entryconfigure test2 -label "test two"
405    list [catch {update idletasks} msg] $msg [destroy .m1]
406} {0 {} {}}
407test macMenu-13.4 {ReconfigureIndividualMenu - separator} {macOnly} {
408    catch {destroy .m1}
409    menu .m1
410    .m1 add separator
411    list [catch {update idletasks} msg] $msg [destroy .m1]
412} {0 {} {}}
413test macMenu-13.5 {ReconfigureIndividualMenu - disabled} {macOnly} {
414    catch {destroy .m1}
415    menu .m1
416    .m1 add command
417    .m1 entryconfigure 1 -state disabled
418    list [catch {update idletasks} msg] $msg [destroy .m1]
419} {0 {} {}}
420test macMenu-13.6 {ReconfigureIndividualMenu - active} {macOnly} {
421    catch {destroy .m1}
422    menu .m1
423    .m1 add command
424    .m1 entryconfigure 1 -state active
425    list [catch {update idletasks} msg] $msg [destroy .m1]
426} {0 {} {}}
427test macMenu-13.7 {ReconfigureIndividualMenu - checkbutton not checked} {macOnly} {
428    catch {destroy .m1}
429    menu .m1
430    .m1 add checkbutton -label test
431    list [catch {update idletasks} msg] $msg [destroy .m1]
432} {0 {} {}}
433test macMenu-13.8 {ReconfigureIndividualMenu - checkbutton - indicator off} {macOnly} {
434    catch {destroy .m1}
435    menu .m1
436    .m1 add checkbutton -label test -indicatoron 0
437    .m1 invoke test
438    list [catch {update idletasks} msg] $msg [destroy .m1]
439} {0 {} {}}
440test macMenu-13.9 {ReconfigureIndividualMenu - checkbutton on} {macOnly} {
441    catch {destroy .m1}
442    menu .m1
443    .m1 add checkbutton -label test
444    .m1 invoke test
445    list [catch {update idletasks} msg] $msg [destroy .m1]
446} {0 {} {}}
447test macMenu-13.10 {ReconfigureIndividualMenu - radiobutton not checked} {macOnly} {
448    catch {destroy .m1}
449    menu .m1
450    .m1 add radiobutton -label test
451    list [catch {update idletasks} msg] $msg [destroy .m1]
452} {0 {} {}}
453test macMenu-13.11 {ReconfigureIndividualMenu - radiobutton - indicator off} {macOnly} {
454    catch {destroy .m1}
455    menu .m1
456    .m1 add radiobutton -label test -indicatoron 0
457    .m1 invoke test
458    list [catch {update idletasks} msg] $msg [destroy .m1]
459} {0 {} {}}
460test macMenu-13.12 {ReconfigureIndividualMenu - radiobutton on} {macOnly} {
461    catch {destroy .m1}
462    menu .m1
463    .m1 add radiobutton -label test
464    .m1 invoke test
465    list [catch {update idletasks} msg] $msg [destroy .m1]
466} {0 {} {}}
467test macMenu-13.13 {ReconfigureIndividualMenu} {macOnly} {
468    catch {destroy .m1}
469    . configure -menu ""
470    menu .m1
471    .m1 add cascade -menu .m3
472    .m1 entryconfigure 1 -menu .m2
473    list [catch {update idletasks} msg] $msg [destroy .m1]
474} {0 {} {}}
475test macMenu-13.14 {ReconfigureIndividualMenu} {macOnly} {
476    catch {destroy .m1}
477    catch {destroy .m2}
478    . configure -menu ""
479    menu .m1
480    .m1 add cascade -menu .m3
481    menu .m2
482    .m1 entryconfigure 1 -menu .m2
483    list [catch {update idletasks} msg] $msg [destroy .m1 .m2]
484} {0 {} {}}
485test macMenu-13.15 {ReconfigureIndividualMenu - accelerator} {macOnly} {
486    catch {destroy .m1}
487    menu .m1
488    .m1 add command -accel "Command-S"
489    list [catch {update idletasks} msg] $msg [destroy .m1]
490} {0 {} {}}
491test macMenu-13.16 {ReconfigureIndividualMenu - parent is disabled} {macOnly} {
492    catch {destroy .m1}
493    menu .m1
494    .m1 add cascade -label .m1.edit -label "Edit" -state disabled
495    menu .m1.edit
496    .m1.edit add command -label foo
497    list [catch {update idletasks} msg] $msg [destroy .m1]
498} {0 {} {}}
499test macMenu-13.17 {ReconfigureIndividualMenu - disabling parent} {macOnly} {
500    catch {destroy .m1}
501    menu .m1
502    .m1 add cascade -label .m1.edit -label Edit
503    menu .m1.edit
504    .m1.edit add command -label foo
505    .m1 entryconfigure Edit -state disabled
506    list [catch {update idletasks} msg] $msg [destroy .m1]
507} {0 {} {}}
508
509test macMenu-14.1 {ReconfigureMacintoshMenu - normal menu} {macOnly} {
510    catch {destroy .m1}
511    menu .m1 -tearoff 0
512    .m1 add command -label test
513    list [catch {update idletasks} msg] $msg [destroy .m1]
514} {0 {} {}}
515test macMenu-14.2 {ReconfigureMacintoshMenu - apple menu} {macOnly} {
516    catch {destroy .m1}
517    menu .m1
518    .m1 add cascade -menu .m1.apple
519    menu .m1.apple -tearoff 0
520    .m1.apple add command -label test
521    . configure -menu .m1
522    raise .
523    list [catch {update idletasks} msg] $msg [. configure -menu ""] [destroy .m1]
524} {0 {} {} {}}
525test macMenu-14.3 {ReconfigureMacintoshMenu - help menu} {macOnly} {
526    catch {destroy .m1}
527    menu .m1
528    .m1 add cascade -menu .m1.help
529    menu .m1.help -tearoff 0
530    .m1.help add command -label test
531    . configure -menu .m1
532    raise .
533    list [catch {update idletasks} msg] $msg [. configure -menu ""] [destroy .m1]
534} {0 {} {} {}}
535test macMenu-14.4 {ReconfigureMacintoshMenu - menubar} {macOnly} {
536    catch {destroy .m1}
537    menu .m1
538    .m1 add cascade -menu .m1.file -label "foo"
539    menu .m1.file
540    . configure -menu .m1
541    raise .
542    .m1 entryconfigure foo -label "File"
543    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
544} {0 {} {} {}}
545
546test macMenu-15.1 {CompleteIdlers - no idle pending} {macOnly} {
547    catch {destroy .m1}
548    menu .m1
549    .m1 add command -label test
550    update idletasks
551    list [catch {.m1 post 40 40} msg] $msg [destroy .m1]
552} {0 {} {}}
553test macMenu-15.2 {CompleteIdlers - idle pending} {macOnly} {
554    catch {destroy .m1}
555    menu .m1
556    .m1 add command -label test
557    list [catch {.m1 post 40 40} msg] $msg [destroy .m1]
558} {0 {} {}}
559test macMenu-15.3 {CompleteIdlers - recursive} {macOnly} {
560    catch {destroy .m1}
561    menu .m1
562    .m1 add cascade -menu .m1.m2 -label test
563    menu .m1.m2
564    .m1.m2 add command -label test
565    list [catch {.m1 post 40 40} msg] $msg [destroy .m1]
566} {0 {} {}}
567
568#Don't know how to generate nested post menus
569test macMenu-16.1 {TkpPostMenu} {macOnly} {
570    catch {destroy .m1}
571    menu .m1 -postcommand "destroy .m1"
572    list [catch {.m1 post 40 40} msg] $msg
573} {0 {}}
574test macMenu-16.2 {TkpPostMenu} {macOnly} {
575    catch {destroy .m1}
576    menu .m1 -postcommand "blork"
577    list [catch {.m1 post 40 40} msg] $msg [destroy .m1]
578} {1 {invalid command name "blork"} {}}
579# We need to write the interactive test for menu posting.
580
581test macMenu-17.1 {TkpMenuNewEntry - no idle pending} {macOnly} {
582    catch {destroy .m1}
583    menu .m1
584    list [catch {.m1 add command -label test} msg] $msg [destroy .m1]
585} {0 {} {}}
586test macMenu-17.2 {TkpMenuNewEntry - idle pending} {macOnly} {
587    catch {destroy .m1}
588    menu .m1
589    .m1 add command -label test
590    list [catch {.m1 add command -label test2} msg] $msg [destroy .m1]
591} {0 {} {}}
592
593test macMenu-18.1 {DrawMenuBarWhenIdle} {macOnly} {
594    catch {destroy .m1}
595    . configure -menu ""
596    menu .m1
597    . configure -menu .m1
598    list [catch {update idletasks} msg] $msg [. configure -menu ""] [destroy .m1]
599} {0 {} {} {}}
600test macMenu-18.2 {DrawMenuBarWhenIdle - clearing old apple menu out} {macOnly} {
601    catch {destroy .m1}
602    menu .m1
603    .m1 add cascade -menu .m1.apple
604    menu .m1.apple
605    .m1.apple add command -label test
606    . configure -menu .m1
607    raise .
608    update
609    . configure -menu ""
610    raise .
611    list [catch {update} msg] $msg [destroy .m1]
612} {0 {} {}}
613test macMenu-18.3 {DrawMenuBarWhenIdle - clearing out old help menu} {macOnly} {
614    catch {destroy .m1}
615    menu .m1
616    .m1 add cascade -menu .m1.help
617    menu .m1.help
618    .m1.help add command -label test
619    . configure -menu .m1
620    raise .
621    update
622    . configure -menu ""
623    raise .
624    list [catch {update} msg] $msg [destroy .m1]
625} {0 {} {}}
626test macMenu-18.4 {DrawMenuBarWhenIdle - menu not there} {macOnly} {
627    catch {destroy .m1}
628    . configure -menu .m1
629    raise .
630    list [catch {update} msg] $msg [. configure -menu ""]
631} {0 {} {}}
632test macMenu-18.5 {DrawMenuBarWhenIdle - menu there} {macOnly} {
633    catch {destroy .m1}
634    menu .m1
635    . configure -menu .m1
636    raise .
637    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
638} {0 {} {} {}}
639test macMenu-18.6 {DrawMenuBarWhenIdle - no apple menu} {macOnly} {
640    catch {destroy .m1}
641    menu .m1
642    . configure -menu .m1
643    raise .
644    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
645} {0 {} {} {}}
646test macMenu-18.7 {DrawMenuBarWhenIdle - apple menu references but not there} {macOnly} {
647    catch {destroy .m1}
648    menu .m1
649    .m1 add cascade -menu .m1.apple
650    . configure -menu .m1
651    raise .
652    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
653} {0 {} {} {}}
654test macMenu-18.8 {DrawMenuBarWhenIdle - apple menu there} {macOnly} {
655    catch {destroy .m1}
656    menu .m1
657    .m1 add cascade -menu .m1.apple
658    menu .m1.apple
659    .m1.apple add command -label test
660    . configure -menu .m1
661    raise .
662    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
663} {0 {} {} {}}
664test macMenu-18.9 {DrawMenuBarWhenIdle - apple menu there; no idle handler} {macOnly} {
665    catch {destroy .m1}
666    menu .m1
667    .m1 add cascade -menu .m1.apple
668    menu .m1.apple
669    .m1.apple add command -label test
670    . configure -menu .m1
671    raise .
672    update idletasks
673    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
674} {0 {} {} {}}
675test macMenu-18.10 {DrawMenuBarWhenIdle - no help menu} {macOnly} {
676    catch {destroy .m1}
677    menu .m1
678    . configure -menu .m1
679    raise .
680    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
681} {0 {} {} {}}
682test macMenu-18.11 {DrawMenuBarWhenIdle - help menu referenced but not there} {macOnly} {
683    catch {destroy .m1}
684    menu .m1
685    .m1 add cascade -menu .m1.help
686    . configure -menu .m1
687    raise .
688    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
689} {0 {} {} {}}
690test macMenu-18.12 {DrawMenuBarWhenIdle - help menu there} {macOnly} {
691    catch {destroy .m1}
692    menu .m1
693    .m1 add cascade -menu .m1.help
694    menu .m1.help
695    .m1.help add command -label test
696    . configure -menu .m1
697    raise .
698    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
699} {0 {} {} {}}
700test macMenu-18.13 {DrawMenuBarWhenIdle - help menu there - no idlers} {macOnly} {
701    catch {destroy .m1}
702    menu .m1
703    .m1 add cascade -menu .m1.help
704    menu .m1.help
705    .m1.help add command -label test
706    . configure -menu .m1
707    raise .
708    update idletasks
709    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
710} {0 {} {} {}}
711# Can't generate no menubar clone
712test macMenu-18.14 {DrawMenuBarWhenIdle - apple and help menus in tearoff menubar} {macOnly} {
713    catch {destroy .m1}
714    menu .m1
715    .m1 add cascade -menu .m1.apple
716    .m1 add cascade -menu .m1.help
717    menu .m1.apple
718    menu .m1.help
719    . configure -menu .m1
720    raise .
721    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
722} {0 {} {} {}}
723test macMenu-18.15 {DrawMenuBarWhenIdle - apple and help menus in non-tearoff menubar} {macOnly} {
724    catch {destroy .m1}
725    menu .m1 -tearoff 0
726    .m1 add cascade -menu .m1.apple
727    .m1 add cascade -menu .m1.help
728    menu .m1.apple
729    menu .m1.help
730    . configure -menu .m1
731    raise .
732    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
733} {0 {} {} {}}
734test macMenu-18.16 {DrawMenuBarWhenIdle - no apple menu} {macOnly} {
735    catch {destroy .m1}
736    menu .m1 -tearoff 0
737    . configure -menu .m1
738    raise .
739    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
740} {0 {} {} {}}
741test macMenu-18.17 {DrawMenuBarWhenIdle - apple menu} {macOnly} {
742    catch {destroy .m1}
743    menu .m1 -tearoff 0
744    . configure -menu .m1
745    .m1 add cascade -menu .m1.apple
746    menu .m1.apple
747    .m1.apple add cascade -label test -menu .m1.apple.test
748    menu .m1.apple.test
749    raise .
750    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
751} {0 {} {} {}}
752test macMenu-18.18 {DrawMenuBarWhenIdle - big for loop} {macOnly} {
753    catch {destroy .m1}
754    menu .m1 -tearoff 0
755    menu .m1.apple -tearoff 0
756    menu .m1.help -tearoff 0
757    menu .m1.foo -tearoff 0
758    .m1 add cascade -menu .m1.apple
759    .m1 add cascade -menu .m1.help
760    .m1 add cascade -label Foo -menu .m1.foo
761    . configure -menu .m1
762    raise .
763    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
764} {0 {} {} {}}
765test macMenu-18.19 {DrawMenuBarWhenIdle = disabled menu} {macOnly} {
766    catch {destroy .m1}
767    menu .m1 -tearoff 0
768    menu .m1.edit -tearoff 0
769    .m1 add cascade -menu .m1.edit -label Edit
770    . configure -menu .m1
771    raise .
772    .m1 entryconfigure Edit -state disabled
773    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
774} {0 {} {} {}}
775
776test macMenu-19.1 {RecursivelyInsertMenu} {macOnly} {
777    catch {destroy .m1}
778    catch {destroy .m2}
779    catch {destroy .main}
780    catch {destroy .t2}
781    toplevel .t2 -menu .main
782    wm geometry .t2 +0+0
783    menu .main
784    .main add cascade -menu .m1 -label ".m1"
785    menu .m1
786    .m1 add command -label "Test 2"
787    .m1 add cascade -label ".m2" -menu .m2
788    menu .m2
789    .m2 add command -label "Test 3"
790    list [catch {raise .t2} msg] $msg [destroy .t2 .main .m1 .m2]
791} {0 {} {}}
792test macMenu-19.2 {RecursivelyInsertMenu} {macOnly} {
793    catch {destroy .m1}
794    catch {destroy .m2}
795    catch {destroy .main}
796    catch {destroy .t2}
797    toplevel .t2 -menu .main
798    wm geometry .t2 +0+0
799    menu .main
800    .main add cascade -menu .m1 -label ".m1"
801    menu .m1
802    .m1 add command -label "Test 2"
803    .m1 add cascade -label ".m2" -menu .m2
804    menu .m2
805    .m2 add command -label "Test 3"
806    list [catch {raise .t2} msg] $msg [destroy .t2 .main .m1 .m2]
807} {0 {} {}}
808
809test macMenu-20.1 {SetDefaultMenuBar} {macOnly} {
810    . configure -menu ""
811    raise .
812    list [catch {update} msg] $msg
813} {0 {}}
814
815test macMenu-21.1 {TkpSetMainMenubar - not front window} {macOnly} {
816    catch {destroy .m1}
817    catch {destroy .t2}
818    toplevel .t2
819    wm geometry .t2 +50+50
820    menu .m1
821    raise .
822    update
823    list [catch {.t2 configure -menu .m1} msg] $msg [destroy .t2] [destroy .m1]
824} {0 {} {} {}}
825test macMenu-21.2 {TkpSetMainMenubar - menu null} {macOnly} {
826    . configure -menu ""
827    raise .
828    list [catch {update} msg] $msg
829} {0 {}}
830test macMenu-21.3 {TkpSetMainMenubar - different interps} {macOnly} {
831    catch {destroy .m1}
832    catch {interp delete testinterp}
833    interp create testinterp
834    load {} Tk testinterp
835    menu .m1
836    . configure -menu .m1
837    raise .
838    update
839    interp eval testinterp {menu .m1}
840    interp eval testinterp {. configure -menu .m1}
841    interp eval testinterp {raise .}
842    list [catch {interp eval testinterp {update}} msg] $msg [interp delete testinterp] [. configure -menu ""] [destroy .m1]
843} {0 {} {} {} {}}
844test macMenu-21.4 {TkpSetMainMenubar - different windows} {macOnly} {
845    catch {destroy .m1}
846    catch {destroy .t2}
847    menu .m1
848    . configure -menu .m1
849    toplevel .t2
850    wm geometry .t2 +50+50
851    .t2 configure -menu .m1
852    raise .
853    update
854    raise .t2
855    list [catch {update} msg] $msg [destroy .t2] [. configure -menu ""] [destroy .m1]
856} {0 {} {} {} {}}
857test macMenu-21.5 {TkpSetMainMenubar - old menu was null} {macOnly} {
858    catch {destroy .m1}
859    . configure -menu ""
860    update
861    menu .m1
862    . configure -menu .m1
863    raise .
864    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
865} {0 {} {} {}}
866test macMenu-21.6 {TkpSetMainMenubar - old menu different} {macOnly} {
867    catch {destroy .m1}
868    catch {destroy .m2}
869    menu .m1
870    menu .m2
871    . configure -menu .m1
872    raise .
873    update
874    . configure -menu .m2
875    raise .
876    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1] [destroy .m2]
877} {0 {} {} {} {}}
878test macMenu-21.7 {TkpSetMainMenubar - child window NULL - parent window now} {macOnly} {
879    catch {destroy .m1}
880    catch {destroy .t2}
881    toplevel .t2 
882    menu .m1
883    .m1 add cascade -label Foo -menu .m1.foo
884    menu .m1.foo
885    .m1.foo add command -label foo
886    . configure -menu .m1
887    raise .t2
888    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1] [destroy .t2]
889} {0 {} {} {} {}}
890test macMenu-21.8 {TkpSetMainMenubar - tearoff window} {macOnly} {
891    catch {destroy .t2}
892    toplevel .t2 -menu .t2.m1
893    menu .t2.m1
894    .t2.m1 add cascade -label File -menu .t2.m1.foo
895    menu .t2.m1.foo
896    .t2.m1.foo add command -label foo
897    raise .t2
898    tk::TearOffMenu .t2.m1.foo 100 100
899    list [catch {update} msg] $msg [destroy .t2]
900} {0 {} {}}
901
902test macMenu-22.1 {TkSetWindowMenuBar} {macOnly} {
903} {}
904
905test macMenu-23.1 {TkMacDispatchMenuEvent} {macOnly} {
906    # needs to be interactive.
907} {}
908
909test macMenu-24.1 {GetMenuIndicatorGeometry} {macOnly} {
910    catch {destroy .m1}
911    menu .m1
912    .m1 add checkbutton -label foo
913    .m1 invoke foo
914    list [catch {tk::TearOffMenu .m1 40 40}] [destroy .m1]
915} {0 {}}
916
917test macMenu-25.1 {GetMenuAccelGeometry - cascade entry} {macOnly} {
918    catch {destroy .m1}
919    menu .m1
920    .m1 add cascade -label foo
921    list [catch {tk::TearOffMenu .m1 40 40}] [destroy .m1]
922} {0 {}}
923test macMenu-25.2 {GetMenuAccelGeometry - no accel} {macOnly} {
924    catch {destroy .m1}
925    menu .m1
926    .m1 add command
927    list [catch {tk::TearOffMenu .m1 40 40}] [destroy .m1]
928} {0 {}}
929test macMenu-25.3 {GetMenuAccelGeometry - no special chars - arbitrary string} {macOnly} {
930    catch {destroy .m1}
931    menu .m1
932    .m1 add command -accel "Test"
933    list [catch {tk::TearOffMenu .m1 40 40}] [destroy .m1]
934} {0 {}}
935test macMenu-25.4 {GetMenuAccelGeometry - Command} {macOnly} {
936    catch {destroy .m1}
937    menu .m1
938    .m1 add command -label foo -accel "Cmd+S"
939    list [catch {tk::TearOffMenu .m1 40 40}] [destroy .m1]
940} {0 {}}
941test macMenu-25.5 {GetMenuAccelGeometry - Control} {macOnly} {
942    catch {destroy .m1}
943    menu .m1
944    .m1 add command -label foo -accel "Ctrl+S"
945    list [catch {tk::TearOffMenu .m1 40 40}] [destroy .m1]
946} {0 {}}
947test macMenu-25.6 {GetMenuAccelGeometry - Shift} {macOnly} {
948    catch {destroy .m1}
949    menu .m1
950    .m1 add command -label foo -accel "Shift+S"
951    list [catch {tk::TearOffMenu .m1 40 40}] [destroy .m1]
952} {0 {}}
953test macMenu-25.7 {GetMenuAccelGeometry - Option} {macOnly} {
954    catch {destroy .m1}
955    menu .m1
956    .m1 add command -label foo -accel "Opt+S"
957    list [catch {tk::TearOffMenu .m1 40 40}] [destroy .m1]
958} {0 {}}
959test macMenu-25.8 {GetMenuAccelGeometry - Combination} {macOnly} {
960    catch {destroy .m1}
961    menu .m1
962    .m1 add command -label foo -accel "Cmd+Shift+S"
963    list [catch {tk::TearOffMenu .m1 40 40}] [destroy .m1]
964} {0 {}}
965test macMenu-25.9 {GetMenuAccelGeometry - extra text} {macOnly} {
966    catch {destroy .m1}
967    menu .m1
968    .m1 add command -label foo -accel "Command+Delete"
969    list [catch {tk::TearOffMenu .m1 40 40}] [destroy .m1]
970} {0 {}}
971    
972test macMenu-26.1 {GetTearoffEntryGeometry} {macOnly} {
973    # can't call this on power mac.
974} {}
975
976test macMenu-27.1 {GetMenuSeparatorGeometry} {macOnly} {
977    catch {destroy .m1}
978    menu .m1
979    .m1 add separator
980    list [catch {tk::TearOffMenu .m1 40 40}] [destroy .m1]
981} {0 {}}
982
983test macMenu-28.1 {DrawMenuEntryIndicator - non-checkbutton} {macOnly} {
984    catch {destroy .m1}
985    menu .m1
986    .m1 add command -label foo
987    set tearoff [tk::TearOffMenu .m1 40 40]
988    list [catch {update} msg] $msg [destroy .m1]
989} {0 {} {}}
990test macMenu-28.2 {DrawMenuEntryIndicator - indicator off} {macOnly} {
991    catch {destroy .m1}
992    menu .m1
993    .m1 add checkbutton -label foo -indicatoron 0
994    .m1 invoke foo
995    set tearoff [tk::TearOffMenu .m1 40 40]
996    list [catch {update} msg] $msg [destroy .m1]
997} {0 {} {}}
998test macMenu-28.3 {DrawMenuEntryIndicator - not selected} {macOnly} {
999    catch {destroy .m1}
1000    menu .m1
1001    .m1 add checkbutton -label foo
1002    set tearoff [tk::TearOffMenu .m1 40 40]
1003    list [catch {update} msg] $msg [destroy .m1]
1004} {0 {} {}}
1005test macMenu-28.4 {DrawMenuEntryIndicator - checkbutton} {macOnly} {
1006    catch {destroy .m1}
1007    menu .m1
1008    .m1 add checkbutton -label foo
1009    .m1 invoke foo
1010    set tearoff [tk::TearOffMenu .m1 40 40]
1011    list [catch {update} msg] $msg [destroy .m1]
1012} {0 {} {}}
1013test macMenu-28.5 {DrawMenuEntryIndicator - radiobutton} {macOnly} {
1014    catch {destroy .m1}
1015    menu .m1
1016    .m1 add radiobutton -label foo
1017    .m1 invoke foo
1018    set tearoff [tk::TearOffMenu .m1 40 40]
1019    list [catch {update} msg] $msg [destroy .m1]
1020} {0 {} {}}
1021
1022# Cannot reproduce resources missing or color allocation failing easily.
1023test macMenu-29.1 {DrawSICN} {macOnly} {
1024   catch {destroy .m1}
1025   menu .m1
1026   .m1 add command -label foo -accel "Cmd+S"
1027   set tearoff [tk::TearOffMenu .m1 40 40]
1028   list [catch {update} msg] $msg [destroy .m1]
1029} {0 {} {}}
1030
1031# Cannot reproduce resources missing
1032test macMenu-30.1 {DrawMenuEntryAccelerator - cascade entry} {macOnly} {
1033    catch {destroy .m1}
1034    menu .m1
1035    .m1 add cascade -label foo
1036    set tearoff [tk::TearOffMenu .m1 40 40]
1037    list [catch {update} msg] $msg [destroy .m1]
1038} {0 {} {}}
1039test macMenu-30.2 {DrawMenuEntryAccelerator - no accel string} {macOnly} {
1040    catch {destroy .m1}
1041    menu .m1
1042    .m1 add command -label foo
1043    set tearoff [tk::TearOffMenu .m1 40 40]
1044    list [catch {update} msg] $msg [destroy .m1]
1045} {0 {} {}}
1046test macMenu-30.3 {DrawMenuEntryAccelerator - random accel string} {macOnly} {
1047    catch {destroy .m1}
1048    menu .m1
1049    .m1 add command -label foo -accel foo
1050    set tearoff [tk::TearOffMenu .m1 40 40]
1051    list [catch {update} msg] $msg [destroy .m1]
1052} {0 {} {}}
1053test macMenu-30.4 {DrawMenuEntryAccelerator - Command} {macOnly} {
1054    catch {destroy .m1}
1055    menu .m1
1056    .m1 add command -label foo -accel "Cmd+S"
1057    set tearoff [tk::TearOffMenu .m1 40 40]
1058    list [catch {update} msg] $msg [destroy .m1]
1059} {0 {} {}}
1060test macMenu-30.5 {DrawMenuEntryAccelerator - Option} {macOnly} {
1061    catch {destroy .m1}
1062    menu .m1
1063    .m1 add command -label foo -accel "Opt+S"
1064    set tearoff [tk::TearOffMenu .m1 40 40]
1065    list [catch {update} msg] $msg [destroy .m1]
1066} {0 {} {}}
1067test macMenu-30.6 {DrawMenuEntryAccelerator - Shift} {macOnly} {
1068    catch {destroy .m1}
1069    menu .m1
1070    .m1 add command -label foo -accel "Shift+S"
1071    set tearoff [tk::TearOffMenu .m1 40 40]
1072    list [catch {update} msg] $msg [destroy .m1]
1073} {0 {} {}}
1074test macMenu-30.7 {DrawMenuEntryAccelerator - Control} {macOnly} {
1075    catch {destroy .m1}
1076    menu .m1
1077    .m1 add command -label foo -accel "Ctrl+S"
1078    set tearoff [tk::TearOffMenu .m1 40 40]
1079    list [catch {update} msg] $msg [destroy .m1]
1080} {0 {} {}}
1081test macMenu-30.8 {DrawMenuEntryAccelerator - combination} {macOnly} {
1082    catch {destroy .m1}
1083    menu .m1
1084    .m1 add command -label foo -accel "Cmd+Shift+S"
1085    set tearoff [tk::TearOffMenu .m1 40 40]
1086    list [catch {update} msg] $msg [destroy .m1]
1087} {0 {} {}}
1088
1089test macMenu-31.1 {DrawMenuSeparator} {macOnly} {
1090    catch {destroy .m1}
1091    menu .m1
1092    .m1 add separator
1093    set tearoff [tk::TearOffMenu .m1 40 40]
1094    list [catch {update} msg] $msg [destroy .m1]
1095} {0 {} {}}
1096
1097test macMenu-32.1 {TkpDrawMenuEntryLabel} {macOnly} {
1098    catch {destroy .m1}
1099    menu .m1
1100    .m1 add command -label foo
1101    set tearoff [tk::TearOffMenu .m1 40 40]
1102    list [catch {update} msg] $msg [destroy .m1]
1103} {0 {} {}}
1104
1105test macMenu-33.1 {MenuDefProc - No way to test automatically.} {} {}
1106test macMenu-34.1 {TkMacHandleTearoffMenu - no way to test automatically} {} {}
1107test macMenu-35.1 {TkpInitializeMenuBindings - nothing to do} {} {}
1108
1109test macMenu-36.1 {TkpComputeMenubarGeometry} {macOnly} {
1110    catch {destroy .m1}
1111    menu .m1
1112    .m1 add cascade -label foo
1113    . configure -menu .m1
1114    list [catch {update} msg] $msg [. configure -menu ""] [destroy .m1]
1115} {0 {} {} {}}
1116
1117test macMenu-37.1 {DrawTearoffEntry - can't do automatically} {} {}
1118test macMenu-38.1 {TkMacSetHelpMenuItemCount - called at boot time} {} {}
1119test macMenu-39.1 {TkMacMenuClick - can't do automatically} {} {}
1120
1121test macMenu-40.1 {TkpDrawMenuEntry - gc for active and not strict motif} {macOnly} {
1122    catch {destroy .m1}
1123    menu .m1
1124    .m1 add command -label foo
1125    set tearoff [tk::TearOffMenu .m1 40 40]
1126    .m1 entryconfigure 1 -state active
1127    list [update] [destroy .m1]
1128} {{} {}}
1129test macMenu-40.2 {TkpDrawMenuEntry - gc for active menu item with its own gc} {macOnly} {
1130    catch {destroy .m1}
1131    menu .m1
1132    .m1 add command -label foo -activeforeground red
1133    set tearoff [tk::TearOffMenu .m1 40 40]
1134    .m1 entryconfigure 1 -state active
1135    list [update] [destroy .m1]
1136} {{} {}}
1137test macMenu-40.3 {TkpDrawMenuEntry - gc for active and strict motif} {macOnly} {
1138    catch {destroy .m1}
1139    menu .m1
1140    set tk_strictMotif 1
1141    .m1 add command -label foo
1142    set tearoff [tk::TearOffMenu .m1 40 40]
1143    .m1 entryconfigure 1 -state active
1144    list [update] [destroy .m1] [set tk_strictMotif 0]
1145} {{} {} 0}
1146test macMenu-40.4 {TkpDrawMenuEntry - gc for disabled with disabledfg and custom entry} {macOnly} {
1147    catch {destroy .m1}
1148    menu .m1 -disabledforeground blue
1149    .m1 add command -label foo -state disabled -background red
1150    set tearoff [tk::TearOffMenu .m1 40 40]
1151    list [update] [destroy .m1]
1152} {{} {}}
1153test macMenu-40.5 {TkpDrawMenuEntry - gc for disabled with disabledFg} {macOnly} {
1154    catch {destroy .m1}
1155    menu .m1 -disabledforeground blue
1156    .m1 add command -label foo -state disabled
1157    set tearoff [tk::TearOffMenu .m1 40 40]
1158    list [update] [destroy .m1]
1159} {{} {}}
1160test macMenu-40.6 {TkpDrawMenuEntry - gc for disabled - no disabledFg} {macOnly} {
1161    catch {destroy .m1}
1162    menu .m1 -disabledforeground ""
1163    .m1 add command -label foo -state disabled
1164    set tearoff [tk::TearOffMenu .m1 40 40]
1165    list [update] [destroy .m1]
1166} {{} {}}
1167test macMenu-40.7 {TkpDrawMenuEntry - gc for normal - custom entry} {macOnly} {
1168    catch {destroy .m1}
1169    menu .m1
1170    .m1 add command -label foo -foreground red
1171    set tearoff [tk::TearOffMenu .m1 40 40]
1172    list [update] [destroy .m1]
1173} {{} {}}
1174test macMenu-40.8 {TkpDrawMenuEntry - gc for normal} {macOnly} {
1175    catch {destroy .m1}
1176    menu .m1
1177    .m1 add command -label foo
1178    set tearoff [tk::TearOffMenu .m1 40 40]
1179    list [update] [destroy .m1]
1180} {{} {}}
1181test macMenu-40.9 {TkpDrawMenuEntry - gc for indicator - custom entry} {macOnly} {
1182    catch {destroy .m1}
1183    menu .m1
1184    .m1 add checkbutton -label foo -selectcolor orange
1185    .m1 invoke 1
1186    set tearoff [tk::TearOffMenu .m1 40 40]
1187    list [update] [destroy .m1]
1188} {{} {}}
1189test macMenu-40.10 {TkpDrawMenuEntry - gc for indicator} {macOnly} {
1190    catch {destroy .m1}
1191    menu .m1
1192    .m1 add checkbutton -label foo
1193    .m1 invoke 1
1194    set tearoff [tk::TearOffMenu .m1 40 40]
1195    list [update] [destroy .m1]
1196} {{} {}}
1197test macMenu-40.11 {TkpDrawMenuEntry - border - custom entry} {macOnly} {
1198    catch {destroy .m1}
1199    menu .m1
1200    .m1 add command -label foo -activebackground green
1201    set tearoff [tk::TearOffMenu .m1 40 40]
1202    .m1 entryconfigure 1 -state active
1203    list [update] [destroy .m1]
1204} {{} {}}
1205test macMenu-40.12 {TkpDrawMenuEntry - border} {macOnly} {
1206    catch {destroy .m1}
1207    menu .m1
1208    .m1 add command -label foo
1209    set tearoff [tk::TearOffMenu .m1 40 40]
1210    .m1 entryconfigure 1 -state active
1211    list [update] [destroy .m1]
1212} {{} {}}
1213test macMenu-40.13 {TkpDrawMenuEntry - active border - strict motif} {macOnly} {
1214    catch {destroy .m1}
1215    set tk_strictMotif 1
1216    menu .m1
1217    .m1 add command -label foo
1218    set tearoff [tk::TearOffMenu .m1 40 40]
1219    .m1 entryconfigure 1 -state active
1220    list [update] [destroy .m1] [set tk_strictMotif 0]
1221} {{} {} 0}
1222test macMenu-40.14 {TkpDrawMenuEntry - active border - custom entry} {macOnly} {
1223    catch {destroy .m1}
1224    menu .m1
1225    .m1 add command -label foo -activeforeground yellow
1226    set tearoff [tk::TearOffMenu .m1 40 40]
1227    .m1 entryconfigure 1 -state active
1228    list [update] [destroy .m1]
1229} {{} {}}
1230test macMenu-40.15 {TkpDrawMenuEntry - active border} {macOnly} {
1231    catch {destroy .m1}
1232    menu .m1
1233    .m1 add command -label foo
1234    set tearoff [tk::TearOffMenu .m1 40 40]
1235    .m1 entryconfigure 1 -state active
1236    list [update] [destroy .m1]
1237} {{} {}}
1238test macMenu-40.16 {TkpDrawMenuEntry - font - custom entry} {macOnly} {
1239    catch {destroy .m1}
1240    menu .m1
1241    .m1 add command -label foo -font "Helvectica 72"
1242    set tearoff [tk::TearOffMenu .m1 40 40]
1243    list [update] [destroy .m1]
1244} {{} {}}
1245test macMenu-40.17 {TkpDrawMenuEntry - font} {macOnly} {
1246    catch {destroy .m1}
1247    menu .m1 -font "Courier 72"
1248    .m1 add command -label foo
1249    set tearoff [tk::TearOffMenu .m1 40 40]
1250    list [update] [destroy .m1]
1251} {{} {}}
1252test macMenu-40.18 {TkpDrawMenuEntry - separator} {macOnly} {
1253    catch {destroy .m1}
1254    menu .m1
1255    .m1 add separator
1256    set tearoff [tk::TearOffMenu .m1 40 40]
1257    list [update] [destroy .m1]
1258} {{} {}}
1259test macMenu-40.19 {TkpDrawMenuEntry - standard} {macOnly} {
1260    catch {destroy .mb}
1261    menu .m1
1262    .m1 add command -label foo
1263    set tearoff [tk::TearOffMenu .m1 40 40]
1264    list [update] [destroy .m1]
1265} {{} {}}
1266test macMenu-40.20 {TkpDrawMenuEntry - disabled cascade item} {macOnly} {
1267    catch {destroy .m1}
1268    menu .m1
1269    .m1 add cascade -label File -menu .m1.file
1270    menu .m1.file
1271    .m1.file add command -label foo
1272    .m1 entryconfigure File -state disabled
1273    set tearoff [tk::TearOffMenu .m1 40 40]
1274    list [update] [destroy .m1]
1275} {{} {}}
1276test macMenu-40.21 {TkpDrawMenuEntry - indicator} {macOnly} {
1277    catch {destroy .m1}
1278    menu .m1
1279    .m1 add checkbutton -label macMenu-40.20
1280    .m1 invoke 0
1281    set tearoff [tk::TearOffMenu .m1 40 40]
1282    list [update] [destroy .m1]
1283} {{} {}}
1284test macMenu-40.22 {TkpDrawMenuEntry - indicator - hideMargin} {macOnly} {
1285    catch {destroy .m1}
1286    menu .m1
1287    .m1 add checkbutton -label macMenu-40.21 -hidemargin 1
1288    .m1 invoke 0
1289    set tearoff [tk::TearOffMenu .m1 40 40]
1290    list [update] [destroy .m1]
1291} {{} {}}
1292
1293test macMenu-41.1 {TkpComputeStandardMenuGeometry - no entries} {macOnly} {
1294    catch {destroy .m1}
1295    menu .m1
1296    list [update idletasks] [destroy .m1]
1297} {{} {}}
1298test macMenu-41.2 {TkpComputeStandardMenuGeometry - one entry} {macOnly} {
1299    catch {destroy .m1}
1300    menu .m1
1301    .m1 add command -label "one"
1302    list [update idletasks] [destroy .m1]
1303} {{} {}}
1304test macMenu-41.3 {TkpComputeStandardMenuGeometry - more than one entry} {macOnly} {
1305    catch {destroy .m1}
1306    menu .m1
1307    .m1 add command -label "one"
1308    .m1 add command -label "two"
1309    list [update idletasks] [destroy .m1]
1310} {{} {}}
1311test macMenu-41.4 {TkpComputeStandardMenuGeometry - separator} {macOnly} {
1312    catch {destroy .m1}
1313    menu .m1
1314    .m1 add separator
1315    list [update idletasks] [destroy .m1]
1316} {{} {}}
1317test macMenu-41.5 {TkpComputeStandardMenuGeometry - standard label geometry} {macOnly} {
1318    catch {destroy .m1}
1319    menu .m1
1320    .m1 add command -label "test"
1321    list [update idletasks] [destroy .m1]
1322} {{} {}}
1323test macMenu-41.6 {TkpComputeStandardMenuGeometry - different font for entry} {macOnly} {
1324    catch {destroy .m1}
1325    menu .m1 -font "Helvetica 12"
1326    .m1 add command -label "test" -font "Courier 12"
1327    list [update idletasks] [destroy .m1]
1328} {{} {}}
1329test macMenu-41.7 {TkpComputeStandardMenuGeometry - second entry larger} {macOnly} {
1330    catch {destroy .m1}
1331    menu .m1
1332    .m1 add command -label "test"
1333    .m1 add command -label "test test"
1334    list [update idletasks] [destroy .m1]
1335} {{} {}}
1336test macMenu-41.8 {TkpComputeStandardMenuGeometry - first entry larger} {macOnly} {
1337    catch {destroy .m1}
1338    menu .m1
1339    .m1 add command -label "test test"
1340    .m1 add command -label "test"
1341    list [update idletasks] [destroy .m1]
1342} {{} {}}
1343test macMenu-41.9 {TkpComputeStandardMenuGeometry - accelerator} {macOnly} {
1344    catch {destroy .m1}
1345    menu .m1
1346    .m1 add command -label "test" -accel "Ctrl+S"
1347    list [update idletasks] [destroy .m1]
1348} {{} {}}
1349test macMenu-41.10 {TkpComputeStandardMenuGeometry - second accel larger} {macOnly} {
1350    catch {destroy .m1}
1351    menu .m1
1352    .m1 add command -label "test" -accel "1"
1353    .m1 add command -label "test" -accel "1 1"
1354    list [update idletasks] [destroy .m1]
1355} {{} {}}
1356test macMenu-41.11 {TkpComputeStandardMenuGeometry - second accel smaller} {macOnly} {
1357    catch {destroy .m1}
1358    menu .m1
1359    .m1 add command -label "test" -accel "1 1"
1360    .m1 add command -label "test" -accel "1"
1361    list [update idletasks] [destroy .m1]
1362} {{} {}}
1363test macMenu-41.12 {TkpComputeStandardMenuGeometry - indicator} {macOnly} {
1364    catch {destroy .m1}
1365    menu .m1
1366    .m1 add checkbutton -label test
1367    .m1 invoke 1
1368    list [update idletasks] [destroy .m1]
1369} {{} {}}
1370test macMenu-41.13 {TkpComputeStandardMenuGeometry - second indicator less or equal } {macOnly testImageType} {
1371    catch {destroy .m1}
1372    catch {image delete image1}
1373    image create test image1
1374    menu .m1
1375    .m1 add checkbutton -image image1
1376    .m1 invoke 1
1377    .m1 add checkbutton -label test
1378    .m1 invoke 2
1379    list [update idletasks] [destroy .m1] [image delete image1]
1380} {{} {} {}}
1381test macMenu-41.14 {TkpComputeStandardMenuGeometry - hidden margin} {macOnly} {
1382    catch {destroy .m1}
1383    menu .m1
1384    .m1 add checkbutton -label macMenu-41.15 -hidemargin 1
1385    .m1 invoke macMenu-41.15
1386    list [update idletasks] [destroy .m1]
1387} {{} {}}
1388test macMenu-41.15 {TkpComputeStandardMenuGeometry - zero sized menus} {macOnly} {
1389    catch {destroy .m1}
1390    menu .m1 -tearoff 0
1391    list [update idletasks] [destroy .m1]
1392} {{} {}}
1393test macMenu-41.16 {TkpComputeStandardMenuGeometry - first column bigger} {macOnly} {
1394    catch {destroy .m1}
1395    menu .m1
1396    .m1 add command -label one
1397    .m1 add command -label two
1398    .m1 add command -label three -columnbreak 1
1399    list [update idletasks] [destroy .m1]
1400} {{} {}}
1401test macMenu-41.17 {TkpComputeStandardMenuGeometry - second column bigger} {macOnly} {
1402    catch {destroy .m1}
1403    menu .m1 -tearoff 0
1404    .m1 add command -label one
1405    .m1 add command -label two -columnbreak 1
1406    .m1 add command -label three
1407    list [update idletasks] [destroy .m1]
1408} {{} {}}
1409test macMenu-41.18 {TkpComputeStandardMenuGeometry - three columns} {macOnly} {
1410    catch {destroy .m1}
1411    menu .m1 -tearoff 0
1412    .m1 add command -label one
1413    .m1 add command -label two -columnbreak 1
1414    .m1 add command -label three
1415    .m1 add command -label four
1416    .m1 add command -label five -columnbreak 1
1417    .m1 add command -label six
1418    list [update idletasks] [destroy .m1]    
1419} {{} {}}
1420test macMenu-41.19 {TkpComputeStandardMenuGeometry - entry without accel long} {macOnly} {
1421    catch {destroy .m1}
1422    menu .m1 -tearoff 0
1423    .m1 add command -label "This is a long item with no accel."
1424    .m1 add command -label foo -accel "Cmd+S"
1425    list [update idletasks] [destroy .m1]
1426} {{} {}}
1427test macMenu-41.20 {TkpComputeStandardMenuGeometry - entry with accel long} {macOnly} {
1428    catch {destroy .m1}
1429    menu .m1 -tearoff 0
1430    .m1 add command -label foo
1431    .m1 add command -label "This is a long label with an accel." -accel "Cmd+W"
1432    list [update idletasks] [destroy .m1]
1433} {{} {}}
1434
1435test macMenu-42.1 {DrawMenuEntryLabel - setting indicatorSpace} {macOnly} {
1436    catch {destroy .m1}
1437    menu .m1
1438    .m1 add command -label "foo"
1439    set tearoff [tk::TearOffMenu .m1]
1440    list [update idletasks] [destroy .m1]    
1441} {{} {}}
1442test macMenu-42.2 {DrawMenuEntryLabel - drawing image} {macOnly testImageType} {
1443    catch {destroy .m1}
1444    catch {image delete image1}
1445    image create test image1
1446    menu .m1
1447    .m1 add command -image image1
1448    set tearoff [tk::TearOffMenu .m1]
1449    list [update idletasks] [destroy .m1] [image delete image1]
1450} {{} {} {}}
1451test macMenu-42.3 {DrawMenuEntryLabel - drawing select image} {macOnly testImageType} {
1452    catch {destroy .m1}
1453    catch {eval image delete [image names]}
1454    image create test image1
1455    image create test image2
1456    menu .m1
1457    .m1 add checkbutton -image image1 -selectimage image2
1458    .m1 invoke 1
1459    set tearoff [tk::TearOffMenu .m1]
1460    list [update idletasks] [destroy .m1] [eval image delete [image names]]
1461} {{} {} {}}
1462test macMenu-42.4 {DrawMenuEntryLabel - drawing a bitmap} {macOnly} {
1463    catch {destroy .m1}
1464    menu .m1
1465    .m1 add command -bitmap questhead
1466    set tearoff [tk::TearOffMenu .m1]
1467    list [update idletasks] [destroy .m1]
1468} {{} {}}
1469test macMenu-42.5 {DrawMenuEntryLabel - drawing null label} {macOnly} {
1470    catch {destroy .m1}
1471    menu .m1
1472    .m1 add command
1473    set tearoff [tk::TearOffMenu .m1]
1474    list [update idletasks] [destroy .m1]
1475} {{} {}}
1476test macMenu-42.6 {DrawMenuEntryLabel - drawing real label} {macOnly} {
1477    catch {destroy .m1}
1478    menu .m1
1479    .m1 add command -label "This is a long label" -underline 3
1480    set tearoff [tk::TearOffMenu .m1]
1481    list [update idletasks] [destroy .m1]
1482} {{} {}}
1483test macMenu-42.7 {DrawMenuEntryLabel - drawing disabled label} {macOnly} {
1484	catch {destroy .m1}
1485	menu .m1 -disabledforeground ""
1486	.m1 add command -label "This is a long label" -state disabled
1487	set tearoff [tk::TearOffMenu .m1]
1488	list [update idletasks] [destroy .m1]
1489} {{} {}}
1490test macMenu-42.8 {DrawMenuEntryLabel - disabled images} {macOnly testImageType} {
1491	catch {destroy .m1}
1492	catch {image delete image1}
1493	image create test image1
1494	menu .m1
1495	.m1 add command -image image1 -state disabled
1496	set tearoff [tk::TearOffMenu .m1 100 100]
1497	list [update idletasks] [destroy .m1] [image delete image1]
1498} {{} {} {}}
1499
1500test macMenu-43.1 {GetMenuLabelGeometry - image} {macOnly testImageType} {
1501    catch {destroy .m1}
1502    catch {image delete image1}
1503    menu .m1
1504    image create test image1
1505    .m1 add command -image image1
1506    list [update idletasks] [destroy .m1] [image delete image1]
1507} {{} {} {}}
1508test macMenu-43.2 {GetMenuLabelGeometry - bitmap} {macOnly} {
1509    catch {destroy .m1}
1510    menu .m1
1511    .m1 add command -bitmap questhead
1512    list [update idletasks] [destroy .m1]
1513} {{} {}}
1514test macMenu-43.3 {GetMenuLabelGeometry - no text} {macOnly} {
1515    catch {destroy .m1}
1516    menu .m1
1517    .m1 add command
1518    list [update idletasks] [destroy .m1]
1519} {{} {}}
1520test macMenu-43.4 {GetMenuLabelGeometry - text} {macOnly} {
1521    catch {destroy .m1}
1522    menu .m1
1523    .m1 add command -label "This is a test."
1524    list [update idletasks] [destroy .m1]
1525} {{} {}}
1526
1527test macMenu-44.1 {DrawMenuEntryBackground} {macOnly} {
1528    catch {destroy .m1}
1529    menu .m1
1530    .m1 add command -label foo
1531    set tearoff [tk::TearOffMenu .m1 40 40]
1532    list [update] [destroy .m1]
1533} {{} {}}
1534test macMenu-44.2 {DrawMenuEntryBackground} {macOnly} {
1535    catch {destroy .m1}
1536    menu .m1
1537    .m1 add command -label foo
1538    set tearoff [tk::TearOffMenu .m1 40 40]
1539    $tearoff activate 0
1540    list [update] [destroy .m1]
1541} {{} {}}
1542
1543test macMenu-45.1 {TkpMenuInit - called at boot time} {macOnly} {
1544} {}
1545
1546# cleanup
1547deleteWindows
1548::tcltest::cleanupTests
1549return
1550