1# This file is a Tcl script to test out the "pack" command
2# of Tk.  It is organized in the standard fashion for Tcl tests.
3#
4# Copyright (c) 1993 The Regents of the University of California.
5# Copyright (c) 1994 Sun Microsystems, Inc.
6# Copyright (c) 1998-1999 by Scriptics Corporation.
7# All rights reserved.
8#
9# RCS: @(#) $Id$
10
11package require tcltest 2.1
12eval tcltest::configure $argv
13tcltest::loadTestedCommands
14
15# Utility procedures:
16
17proc pack1 {args} {
18    pack forget .pack.a .pack.b .pack.c .pack.d
19    eval pack .pack.a $args
20    pack .pack.b -expand yes -fill both
21    update
22    list [winfo geometry .pack.a] [winfo geometry .pack.b]
23}
24proc pack2 {args} {
25    pack forget .pack.a .pack.b .pack.c .pack.d
26    eval pack .pack.a $args
27    update
28    winfo geometry .pack.a
29}
30proc pack3 {args} {
31    pack forget .pack.a .pack.b .pack.c .pack.d
32    pack .pack.a -side  top
33    pack .pack.c -side left
34    eval pack .pack.b $args
35    update
36    winfo geometry .pack.b
37}
38proc pack4 {option value} {
39    pack forget .pack.a .pack.b .pack.c .pack.d
40    pack .pack.a $option $value
41    set i [pack info .pack.a]
42    lindex $i [expr [lsearch -exact $i $option]+1]
43}
44
45# Create some test windows.
46
47catch {destroy .pack}
48toplevel .pack
49wm geom .pack 300x200+0+0
50wm minsize .pack 1 1
51update idletasks
52foreach i {a b c d} {
53    frame .pack.$i
54    label .pack.$i.label -text $i -relief raised
55    place .pack.$i.label -relwidth 1.0 -relheight 1.0
56}
57.pack.a config -width 20 -height 40
58.pack.b config -width 50 -height 30
59.pack.c config -width 80 -height 80
60.pack.d config -width 40 -height 30
61
62test pack-1.1 {-side option} {
63    pack1 -side top
64} {20x40+140+0 300x160+0+40}
65test pack-1.2 {-side option} {
66    pack1 -side bottom
67} {20x40+140+160 300x160+0+0}
68test pack-1.3 {-side option} {
69    pack1 -side left
70} {20x40+0+80 280x200+20+0}
71test pack-1.4 {-side option} {
72    pack1 -side right
73} {20x40+280+80 280x200+0+0}
74
75test pack-2.1 {x padding and filling} {
76    pack1 -side right -padx 20
77} {20x40+260+80 240x200+0+0}
78test pack-2.1.1 {x padding and filling} {
79    pack1 -side right -padx {10 30}
80} {20x40+250+80 240x200+0+0}
81test pack-2.1.2 {x padding and filling} {
82    pack1 -side right -padx {35 5}
83} {20x40+275+80 240x200+0+0}
84test pack-2.2 {x padding and filling} {
85    pack1 -side right -ipadx 20
86} {60x40+240+80 240x200+0+0}
87test pack-2.3 {x padding and filling} {
88    pack1 -side right -ipadx 5 -padx 10
89} {30x40+260+80 250x200+0+0}
90test pack-2.4 {x padding and filling} {
91    pack1 -side right -padx 20 -fill x
92} {20x40+260+80 240x200+0+0}
93test pack-2.4.1 {x padding and filling} {
94    pack1 -side right -padx {9 31} -fill x
95} {20x40+249+80 240x200+0+0}
96test pack-2.5 {x padding and filling} {
97    pack1 -side right -ipadx 20 -fill x
98} {60x40+240+80 240x200+0+0}
99test pack-2.6 {x padding and filling} {
100    pack1 -side right -ipadx 5 -padx 10 -fill x
101} {30x40+260+80 250x200+0+0}
102test pack-2.6.1 {x padding and filling} {
103    pack1 -side right -ipadx 5 -padx {5 15} -fill x
104} {30x40+255+80 250x200+0+0}
105test pack-2.7 {x padding and filling} {
106    pack1 -side top -padx 20
107} {20x40+140+0 300x160+0+40}
108test pack-2.7.1 {x padding and filling} {
109    pack1 -side top -padx {0 40}
110} {20x40+120+0 300x160+0+40}
111test pack-2.7.2 {x padding and filling} {
112    pack1 -side top -padx {31 9}
113} {20x40+151+0 300x160+0+40}
114test pack-2.8 {x padding and filling} {
115    pack1 -side top -ipadx 20
116} {60x40+120+0 300x160+0+40}
117test pack-2.9 {x padding and filling} {
118    pack1 -side top -ipadx 5 -padx 10
119} {30x40+135+0 300x160+0+40}
120test pack-2.9.1 {x padding and filling} {
121    pack1 -side top -ipadx 5 -padx {5 15}
122} {30x40+130+0 300x160+0+40}
123test pack-2.10 {x padding and filling} {
124    pack1 -side top -padx 20 -fill x
125} {260x40+20+0 300x160+0+40}
126test pack-2.10.1 {x padding and filling} {
127    pack1 -side top -padx {25 15} -fill x
128} {260x40+25+0 300x160+0+40}
129test pack-2.11 {x padding and filling} {
130    pack1 -side top -ipadx 20 -fill x
131} {300x40+0+0 300x160+0+40}
132test pack-2.12 {x padding and filling} {
133    pack1 -side top -ipadx 5 -padx 10 -fill x
134} {280x40+10+0 300x160+0+40}
135test pack-2.12a {x padding and filling} {
136    pack1 -side top -ipadx 5 -padx {5 15} -fill x
137} {280x40+5+0 300x160+0+40}
138set pad [winfo pixels .pack 1c]
139test pack-2.13 {x padding and filling} {
140    pack forget .pack.a .pack.b .pack.c .pack.d
141    pack .pack.a -padx 1c
142    set x [pack info .pack.a]
143    lindex $x [expr [lsearch -exact $x -padx]+1]
144} $pad
145test pack-2.14 {x padding and filling} {
146    pack forget .pack.a .pack.b .pack.c .pack.d
147    pack .pack.a -ipadx 1c
148    set x [pack info .pack.a]
149    lindex $x [expr [lsearch -exact $x -ipadx]+1]
150} $pad
151
152test pack-3.1 {y padding and filling} {
153    pack1 -side right -pady 20
154} {20x40+280+80 280x200+0+0}
155test pack-3.1.1 {y padding and filling} {
156    pack1 -side right -pady {5 35}
157} {20x40+280+65 280x200+0+0}
158test pack-3.1.2 {y padding and filling} {
159    pack1 -side right -pady {40 0}
160} {20x40+280+100 280x200+0+0}
161test pack-3.2 {y padding and filling} {
162    pack1 -side right -ipady 20
163} {20x80+280+60 280x200+0+0}
164test pack-3.3 {y padding and filling} {
165    pack1 -side right -ipady 5 -pady 10
166} {20x50+280+75 280x200+0+0}
167test pack-3.3.1 {y padding and filling} {
168    pack1 -side right -ipady 5 -pady {5 15}
169} {20x50+280+70 280x200+0+0}
170test pack-3.4 {y padding and filling} {
171    pack1 -side right -pady 20 -fill y
172} {20x160+280+20 280x200+0+0}
173test pack-3.4.1 {y padding and filling} {
174    pack1 -side right -pady {35 5} -fill y
175} {20x160+280+35 280x200+0+0}
176test pack-3.5 {y padding and filling} {
177    pack1 -side right -ipady 20 -fill y
178} {20x200+280+0 280x200+0+0}
179test pack-3.6 {y padding and filling} {
180    pack1 -side right -ipady 5 -pady 10 -fill y
181} {20x180+280+10 280x200+0+0}
182test pack-3.6.1 {y padding and filling} {
183    pack1 -side right -ipady 5 -pady {0 20} -fill y
184} {20x180+280+0 280x200+0+0}
185test pack-3.7 {y padding and filling} {
186    pack1 -side top -pady 20
187} {20x40+140+20 300x120+0+80}
188test pack-3.7.1 {y padding and filling} {
189    pack1 -side top -pady {40 0}
190} {20x40+140+40 300x120+0+80}
191test pack-3.8 {y padding and filling} {
192    pack1 -side top -ipady 20
193} {20x80+140+0 300x120+0+80}
194test pack-3.9 {y padding and filling} {
195    pack1 -side top -ipady 5 -pady 10
196} {20x50+140+10 300x130+0+70}
197test pack-3.9.1 {y padding and filling} {
198    pack1 -side top -ipady 5 -pady {3 17}
199} {20x50+140+3 300x130+0+70}
200test pack-3.10 {y padding and filling} {
201    pack1 -side top -pady 20 -fill y
202} {20x40+140+20 300x120+0+80}
203test pack-3.10.1 {y padding and filling} {
204    pack1 -side top -pady {39 1} -fill y
205} {20x40+140+39 300x120+0+80}
206test pack-3.11 {y padding and filling} {
207    pack1 -side top -ipady 20 -fill y
208} {20x80+140+0 300x120+0+80}
209test pack-3.12 {y padding and filling} {
210    pack1 -side top -ipady 5 -pady 10 -fill y
211} {20x50+140+10 300x130+0+70}
212test pack-3.12.1 {y padding and filling} {
213    pack1 -side top -ipady 5 -pady {1 19} -fill y
214} {20x50+140+1 300x130+0+70}
215set pad [winfo pixels .pack 1c]
216test pack-3.13 {y padding and filling} {
217    pack forget .pack.a .pack.b .pack.c .pack.d
218    pack .pack.a -pady 1c
219    set x [pack info .pack.a]
220    lindex $x [expr [lsearch -exact $x -pady]+1]
221} $pad
222test pack-3.14 {y padding and filling} {
223    pack forget .pack.a .pack.b .pack.c .pack.d
224    pack .pack.a -ipady 1c
225    set x [pack info .pack.a]
226    lindex $x [expr [lsearch -exact $x -ipady]+1]
227} $pad
228
229test pack-4.1 {anchors} {
230    pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor n
231} {30x70+135+20}
232test pack-4.2 {anchors} {
233    pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor ne
234} {30x70+260+20}
235test pack-4.3 {anchors} {
236    pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor e
237} {30x70+260+65}
238test pack-4.4 {anchors} {
239    pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor se
240} {30x70+260+110}
241test pack-4.5 {anchors} {
242    pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor s
243} {30x70+135+110}
244test pack-4.6 {anchors} {
245    pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor sw
246} {30x70+10+110}
247test pack-4.7 {anchors} {
248    pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor w
249} {30x70+10+65}
250test pack-4.8 {anchors} {
251    pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor nw
252} {30x70+10+20}
253test pack-4.9 {anchors} {
254    pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor center
255} {30x70+135+65}
256
257# Repeat above tests, but with a frame that isn't at (0,0), so that
258# we can be sure that the frame offset is being added in correctly.
259
260test pack-5.1 {more anchors} {
261    pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor n
262} {60x60+160+60}
263test pack-5.2 {more anchors} {
264    pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor ne
265} {60x60+230+60}
266test pack-5.3 {more anchors} {
267    pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor e
268} {60x60+230+90}
269test pack-5.4 {more anchors} {
270    pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor se
271} {60x60+230+120}
272test pack-5.5 {more anchors} {
273    pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor s
274} {60x60+160+120}
275test pack-5.6 {more anchors} {
276    pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor sw
277} {60x60+90+120}
278test pack-5.7 {more anchors} {
279    pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor w
280} {60x60+90+90}
281test pack-5.8 {more anchors} {
282    pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor nw
283} {60x60+90+60}
284test pack-5.9 {more anchors} {
285    pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor center
286} {60x60+160+90}
287
288test pack-6.1 {-expand option} {
289    pack forget .pack.a .pack.b .pack.c .pack.d
290    pack .pack.a .pack.b .pack.c .pack.d -side left
291    update
292    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
293	    [winfo geometry .pack.c] [winfo geometry .pack.d]
294} {20x40+0+80 50x30+20+85 80x80+70+60 40x30+150+85}
295test pack-6.2 {-expand option} {
296    pack forget .pack.a .pack.b .pack.c .pack.d
297    pack .pack.a -side left -expand yes
298    pack .pack.b -side left
299    pack .pack.c .pack.d -side left -expand 1
300    update
301    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
302	    [winfo geometry .pack.c] [winfo geometry .pack.d]
303} {20x40+18+80 50x30+56+85 80x80+124+60 40x30+241+85}
304test pack-6.3 {-expand option} {
305    pack forget .pack.a .pack.b .pack.c .pack.d
306    pack .pack.a .pack.b .pack.c .pack.d -side top
307    update
308    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
309	    [winfo geometry .pack.c] [winfo geometry .pack.d]
310} {20x40+140+0 50x30+125+40 80x80+110+70 40x30+130+150}
311test pack-6.4 {-expand option} {
312    pack forget .pack.a .pack.b .pack.c .pack.d
313    pack .pack.a -side top -expand yes
314    pack .pack.b -side top
315    pack .pack.c .pack.d -side top -expand 1
316    update
317    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
318	    [winfo geometry .pack.c] [winfo geometry .pack.d]
319} {20x40+140+3 50x30+125+46 80x80+110+79 40x30+130+166}
320test pack-6.5 {-expand option} {
321    pack forget .pack.a .pack.b .pack.c .pack.d
322    pack .pack.a .pack.b .pack.c .pack.d -side right
323    update
324    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
325	    [winfo geometry .pack.c] [winfo geometry .pack.d]
326} {20x40+280+80 50x30+230+85 80x80+150+60 40x30+110+85}
327test pack-6.6 {-expand option} {
328    pack forget .pack.a .pack.b .pack.c .pack.d
329    pack .pack.a -side right -expand yes
330    pack .pack.b -side right
331    pack .pack.c .pack.d -side right -expand 1
332    update
333    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
334	    [winfo geometry .pack.c] [winfo geometry .pack.d]
335} {20x40+262+80 50x30+194+85 80x80+95+60 40x30+18+85}
336test pack-6.7 {-expand option} {
337    pack forget .pack.a .pack.b .pack.c .pack.d
338    pack .pack.a .pack.b .pack.c .pack.d -side bottom
339    update
340    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
341	    [winfo geometry .pack.c] [winfo geometry .pack.d]
342} {20x40+140+160 50x30+125+130 80x80+110+50 40x30+130+20}
343test pack-6.8 {-expand option} {
344    pack forget .pack.a .pack.b .pack.c .pack.d
345    pack .pack.a -side bottom -expand yes
346    pack .pack.b -side bottom
347    pack .pack.c .pack.d -side bottom -expand 1
348    update
349    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
350	    [winfo geometry .pack.c] [winfo geometry .pack.d]
351} {20x40+140+157 50x30+125+124 80x80+110+40 40x30+130+3}
352test pack-6.9 {-expand option} {
353    pack forget .pack.a .pack.b .pack.c .pack.d
354    pack .pack.a -side bottom -expand yes -fill both
355    pack .pack.b -side right
356    pack .pack.c -side top -expand 1 -fill both
357    pack .pack.d -side left
358    update
359    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
360	    [winfo geometry .pack.c] [winfo geometry .pack.d]
361} {300x65+0+135 50x30+250+52 250x105+0+0 40x30+0+105}
362test pack-6.10 {-expand option} {
363    pack forget .pack.a .pack.b .pack.c .pack.d
364    pack .pack.a -side left -expand yes -fill both
365    pack .pack.b -side top
366    pack .pack.c -side right -expand 1 -fill both
367    pack .pack.d -side bottom
368    update
369    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
370	    [winfo geometry .pack.c] [winfo geometry .pack.d]
371} {100x200+0+0 50x30+175+0 160x170+140+30 40x30+100+170}
372test pack-6.11 {-expand option} {
373    pack forget .pack.a .pack.b .pack.c .pack.d
374    pack .pack.a -side left -expand yes -fill both
375    pack .pack.b -side top -expand yes -fill both
376    pack .pack.c -side right -expand 1 -fill both
377    pack .pack.d -side bottom -expand yes -fill both
378    update
379    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
380	    [winfo geometry .pack.c] [winfo geometry .pack.d]
381} {100x200+0+0 200x100+100+0 160x100+140+100 40x100+100+100}
382catch {destroy .pack2}
383toplevel .pack2 -height 400 -width 400
384wm geometry .pack2 +0+0
385pack propagate .pack2 0
386pack forget .pack2.a .pack2.b .pack2.c .pack2.d
387foreach i {w1 w2 w3} {
388    frame .pack2.$i -width 30 -height 30 -bd 2 -relief raised
389    label .pack2.$i.l -text $i
390    place .pack2.$i.l -relwidth 1.0 -relheight 1.0
391}
392test pack-6.12 {-expand option} {
393    pack .pack2.w1 .pack2.w2 .pack2.w3 -padx 5 -ipadx 4 -pady 2 -ipady 6 -expand 1 -side left
394    update
395    list [winfo geometry .pack2.w1] [winfo geometry .pack2.w2] [winfo geometry .pack2.w3]
396} {38x42+47+179 38x42+180+179 38x42+314+179}
397test pack-6.13 {-expand option} {
398    pack forget .pack2.w1 .pack2.w2 .pack2.w3
399    pack .pack2.w1 .pack2.w2 .pack2.w3 -padx 5 -ipadx 4 -pady 2 \
400	    -ipady 6 -expand 1 -side top
401    update
402    list [winfo geometry .pack2.w1] [winfo geometry .pack2.w2] [winfo geometry .pack2.w3]
403} {38x42+181+45 38x42+181+178 38x42+181+312}
404catch {destroy .pack2}
405
406wm geometry .pack {}
407test pack-7.1 {requesting size for parent} {
408    pack forget .pack.a .pack.b .pack.c .pack.d
409    pack .pack.a .pack.b .pack.c .pack.d -side left -padx 5 -pady 10
410    update
411    list [winfo reqwidth .pack] [winfo reqheight .pack]
412} {230 100}
413test pack-7.2 {requesting size for parent} {
414    pack forget .pack.a .pack.b .pack.c .pack.d
415    pack .pack.a .pack.b .pack.c .pack.d -side top -padx 5 -pady 10
416    update
417    list [winfo reqwidth .pack] [winfo reqheight .pack]
418} {90 260}
419test pack-7.3 {requesting size for parent} {
420    pack forget .pack.a .pack.b .pack.c .pack.d
421    pack .pack.a .pack.b .pack.c .pack.d -side right -padx 5 -pady 10
422    update
423    list [winfo reqwidth .pack] [winfo reqheight .pack]
424} {230 100}
425test pack-7.4 {requesting size for parent} {
426    pack forget .pack.a .pack.b .pack.c .pack.d
427    pack .pack.a .pack.b .pack.c .pack.d -side bottom -padx 5 -pady 10
428    update
429    list [winfo reqwidth .pack] [winfo reqheight .pack]
430} {90 260}
431test pack-7.5 {requesting size for parent} {
432    pack forget .pack.a .pack.b .pack.c .pack.d
433    pack .pack.a -side top -padx 5 -pady 10
434    pack .pack.b -side right -padx 5 -pady 10
435    pack .pack.c -side bottom -padx 5 -pady 10
436    pack .pack.d -side left -padx 5 -pady 10
437    update
438    list [winfo reqwidth .pack] [winfo reqheight .pack]
439} {150 210}
440test pack-7.6 {requesting size for parent} {
441    pack forget .pack.a .pack.b .pack.c .pack.d
442    pack .pack.a -side top
443    pack .pack.c -side left
444    pack .pack.d -side bottom
445    update
446    list [winfo reqwidth .pack] [winfo reqheight .pack]
447} {120 120}
448test pack-7.7 {requesting size for parent} {
449    pack forget .pack.a .pack.b .pack.c .pack.d
450    pack .pack.a -side right
451    pack .pack.c -side bottom
452    pack .pack.d -side top
453    update
454    list [winfo reqwidth .pack] [winfo reqheight .pack]
455} {100 110}
456
457
458# For the tests below, create a couple of "pad" windows to shrink
459# the available space for the remaining windows.  The tests have to
460# be done this way rather than shrinking the whole window, because
461# some window managers like mwm won't let a top-level window get
462# very small.
463
464pack forget .pack.a .pack.b .pack.c .pack.d
465frame .pack.right -width 200 -height 10 -bd 2 -relief raised
466frame .pack.bottom -width 10 -height 150 -bd 2 -relief raised
467pack .pack.right -side right
468pack .pack.bottom -side bottom
469pack .pack.a .pack.b .pack.c -side top
470update
471test pack-8.1 {insufficient space} {
472    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
473	    [winfo geometry .pack.b] [winfo ismapped .pack.b] \
474	    [winfo geometry .pack.c] [winfo ismapped .pack.c]
475} {20x40+30+0 1 50x30+15+40 1 80x80+0+70 1}
476wm geom .pack 270x250
477update
478test pack-8.2 {insufficient space} {
479    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
480	    [winfo geometry .pack.b] [winfo ismapped .pack.b] \
481	    [winfo geometry .pack.c] [winfo ismapped .pack.c]
482} {20x40+25+0 1 50x30+10+40 1 70x30+0+70 1}
483wm geom .pack 240x220
484update
485test pack-8.3 {insufficient space} {
486    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
487	    [winfo geometry .pack.b] [winfo ismapped .pack.b] \
488	    [winfo geometry .pack.c] [winfo ismapped .pack.c]
489} {20x40+10+0 1 40x30+0+40 1 70x30+0+70 0}
490wm geom .pack 350x350
491update
492test pack-8.4 {insufficient space} {
493    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
494	    [winfo geometry .pack.b] [winfo ismapped .pack.b] \
495	    [winfo geometry .pack.c] [winfo ismapped .pack.c]
496} {20x40+65+0 1 50x30+50+40 1 80x80+35+70 1}
497wm geom .pack {}
498pack .pack.a -side left
499pack .pack.b -side right
500pack .pack.c -side left
501update
502test pack-8.5 {insufficient space} {
503    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
504	    [winfo geometry .pack.b] [winfo ismapped .pack.b] \
505	    [winfo geometry .pack.c] [winfo ismapped .pack.c]
506} {20x40+0+20 1 50x30+100+25 1 80x80+20+0 1}
507wm geom .pack 320x180
508update
509test pack-8.6 {insufficient space} {
510    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
511	    [winfo geometry .pack.b] [winfo ismapped .pack.b] \
512	    [winfo geometry .pack.c] [winfo ismapped .pack.c]
513} {20x30+0+0 1 50x30+70+0 1 50x30+20+0 1}
514wm geom .pack 250x180
515update
516test pack-8.7 {insufficient space} {
517    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
518	    [winfo geometry .pack.b] [winfo ismapped .pack.b] \
519	    [winfo geometry .pack.c] [winfo ismapped .pack.c]
520} {20x30+0+0 1 30x30+20+0 1 50x30+20+0 0}
521pack forget .pack.b
522update
523test pack-8.8 {insufficient space} {
524    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
525	    [winfo geometry .pack.b] [winfo ismapped .pack.b] \
526	    [winfo geometry .pack.c] [winfo ismapped .pack.c]
527} {20x30+0+0 1 30x30+20+0 0 30x30+20+0 1}
528pack .pack.b -side right -after .pack.a
529wm geom .pack {}
530update
531test pack-8.9 {insufficient space} {
532    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
533	    [winfo geometry .pack.b] [winfo ismapped .pack.b] \
534	    [winfo geometry .pack.c] [winfo ismapped .pack.c]
535} {20x40+0+20 1 50x30+100+25 1 80x80+20+0 1}
536pack forget .pack.right .pack.bottom
537
538test pack-9.1 {window ordering} {
539    pack forget .pack.a .pack.b .pack.c .pack.d
540    pack .pack.a .pack.b .pack.c .pack.d -side top
541    pack .pack.a -after .pack.b
542    pack slaves .pack
543} {.pack.b .pack.a .pack.c .pack.d}
544test pack-9.2 {window ordering} {
545    pack forget .pack.a .pack.b .pack.c .pack.d
546    pack .pack.a .pack.b .pack.c .pack.d -side top
547    pack .pack.a -after .pack.a
548    pack slaves .pack
549} {.pack.a .pack.b .pack.c .pack.d}
550test pack-9.3 {window ordering} {
551    pack forget .pack.a .pack.b .pack.c .pack.d
552    pack .pack.a .pack.b .pack.c .pack.d -side top
553    pack .pack.a -before .pack.d
554    pack slaves .pack
555} {.pack.b .pack.c .pack.a .pack.d}
556test pack-9.4 {window ordering} {
557    pack forget .pack.a .pack.b .pack.c .pack.d
558    pack .pack.a .pack.b .pack.c .pack.d -side top
559    pack .pack.d -before .pack.a
560    pack slaves .pack
561} {.pack.d .pack.a .pack.b .pack.c}
562test pack-9.5 {window ordering} {
563    pack forget .pack.a .pack.b .pack.c .pack.d
564    pack .pack.a .pack.b .pack.c .pack.d -side top
565    pack propagate .pack.c 0
566    pack .pack.a -in .pack.c
567    list [pack slaves .pack] [pack slaves .pack.c]
568} {{.pack.b .pack.c .pack.d} .pack.a}
569test pack-9.6 {window ordering} {
570    pack forget .pack.a .pack.b .pack.c .pack.d
571    pack .pack.a .pack.b .pack.c .pack.d -side top
572    pack .pack.a -in .pack
573    pack slaves .pack
574} {.pack.b .pack.c .pack.d .pack.a}
575test pack-9.7 {window ordering} {
576    pack forget .pack.a .pack.b .pack.c .pack.d
577    pack .pack.a .pack.b .pack.c .pack.d -side top
578    pack .pack.a -padx 0
579    pack slaves .pack
580} {.pack.a .pack.b .pack.c .pack.d}
581test pack-9.8 {window ordering} {
582    pack forget .pack.a .pack.b .pack.c .pack.d
583    pack .pack.a .pack.b .pack.c
584    pack .pack.d
585    pack slaves .pack
586} {.pack.a .pack.b .pack.c .pack.d}
587test pack-9.9 {window ordering} {
588    pack forget .pack.a .pack.b .pack.c .pack.d
589    pack .pack.a .pack.b .pack.c .pack.d
590    pack .pack.b .pack.d .pack.c -before .pack.a
591    pack slaves .pack
592} {.pack.b .pack.d .pack.c .pack.a}
593test pack-9.10 {window ordering} {
594    pack forget .pack.a .pack.b .pack.c .pack.d
595    pack .pack.a .pack.b .pack.c .pack.d
596    pack .pack.a .pack.c .pack.d .pack.b -after .pack.a
597    pack slaves .pack
598} {.pack.a .pack.c .pack.d .pack.b}
599
600test pack-10.1 {retaining/clearing configuration state} {
601    pack forget .pack.a .pack.b .pack.c .pack.d
602    pack .pack.a -side bottom -anchor n -padx 1 -pady 2 -ipadx 3 -ipady 4 \
603	-fill both -expand 1
604    pack forget .pack.a
605    pack .pack.a
606    pack info .pack.a
607} {-in .pack -anchor center -expand 0 -fill none -ipadx 0 -ipady 0 -padx 0 -pady 0 -side top}
608test pack-10.2 {retaining/clearing configuration state} {
609    pack forget .pack.a .pack.b .pack.c .pack.d
610    pack .pack.a -side bottom -anchor n -padx 1 -pady 2 -ipadx 3 -ipady 4 \
611	-fill both -expand 1
612    pack .pack.a -pady 14
613    pack info .pack.a
614} {-in .pack -anchor n -expand 1 -fill both -ipadx 3 -ipady 4 -padx 1 -pady 14 -side bottom}
615test pack-10.3 {bad -in window does not change master} {
616    pack forget .pack.a .pack.b .pack.c .pack.d
617    list [winfo manager .pack.a] \
618         [catch {pack .pack.a -in .pack.a} err] $err \
619         [winfo manager .pack.a]
620} {{} 1 {can't pack .pack.a inside itself} {}}
621
622test pack-11.1 {info option} {
623    pack4 -in .pack
624} .pack
625test pack-11.2 {info option} {
626    pack4 -anchor n
627} n
628test pack-11.3 {info option} {
629    pack4 -anchor sw
630} sw
631test pack-11.4 {info option} {
632    pack4 -expand yes
633} 1
634test pack-11.5 {info option} {
635    pack4 -expand no
636} 0
637test pack-11.6 {info option} {
638    pack4 -fill x
639} x
640test pack-11.7 {info option} {
641    pack4 -fill y
642} y
643test pack-11.8 {info option} {
644    pack4 -fill both
645} both
646test pack-11.9 {info option} {
647    pack4 -fill none
648} none
649test pack-11.10 {info option} {
650    pack4 -ipadx 14
651} 14
652test pack-11.11 {info option} {
653    pack4 -ipady 22
654} 22
655test pack-11.12 {info option} {
656    pack4 -padx 2
657} 2
658test pack-11.12.1 {info option} {
659    pack4 -padx {2 9}
660} {2 9}
661test pack-11.13 {info option} {
662    pack4 -pady 3
663} 3
664test pack-11.13.1 {info option} {
665    pack4 -pady {3 11}
666} {3 11}
667test pack-11.14 {info option} {
668    pack4 -side top
669} top
670test pack-11.15 {info option} {
671    pack4 -side bottom
672} bottom
673test pack-11.16 {info option} {
674    pack4 -side left
675} left
676test pack-11.17 {info option} {
677    pack4 -side right
678} right
679
680test pack-12.1 {command options and errors} {
681    list [catch {pack} msg] $msg
682} {1 {wrong # args: should be "pack option arg ?arg ...?"}}
683test pack-12.2 {command options and errors} {
684    list [catch {pack foo} msg] $msg
685} {1 {wrong # args: should be "pack option arg ?arg ...?"}}
686test pack-12.3 {command options and errors} {
687    list [catch {pack configure x} msg] $msg
688} {1 {bad argument "x": must be name of window}}
689test pack-12.4 {command options and errors} {
690    pack forget .pack.a .pack.b .pack.c .pack.d
691    pack configure .pack.b .pack.c
692    pack slaves .pack
693} {.pack.b .pack.c}
694test pack-12.5 {command options and errors} {
695    pack forget .pack.a .pack.b .pack.c .pack.d
696    list [catch {pack .foo} msg] $msg
697} {1 {bad window path name ".foo"}}
698test pack-12.6 {command options and errors} {
699    pack forget .pack.a .pack.b .pack.c .pack.d
700    list [catch {pack .pack} msg] $msg
701} {1 {can't pack ".pack": it's a top-level window}}
702test pack-12.7 {command options and errors} {
703    pack forget .pack.a .pack.b .pack.c .pack.d
704    list [catch {pack .pack.a -after .foo} msg] $msg
705} {1 {bad window path name ".foo"}}
706test pack-12.8 {command options and errors} {
707    pack forget .pack.a .pack.b .pack.c .pack.d
708    list [catch {pack .pack.a -after .pack.b} msg] $msg
709} {1 {window ".pack.b" isn't packed}}
710test pack-12.9 {command options and errors} {
711    pack forget .pack.a .pack.b .pack.c .pack.d
712    list [catch {pack .pack.a -anchor gorp} msg] $msg
713} {1 {bad anchor "gorp": must be n, ne, e, se, s, sw, w, nw, or center}}
714test pack-12.10 {command options and errors} {
715    pack forget .pack.a .pack.b .pack.c .pack.d
716    list [catch {pack .pack.a -before gorp} msg] $msg
717} {1 {bad window path name "gorp"}}
718test pack-12.11 {command options and errors} {
719    pack forget .pack.a .pack.b .pack.c .pack.d
720    list [catch {pack .pack.a -before .pack.b} msg] $msg
721} {1 {window ".pack.b" isn't packed}}
722test pack-12.12 {command options and errors} {
723    pack forget .pack.a .pack.b .pack.c .pack.d
724    list [catch {pack .pack.a -expand "who cares?"} msg] $msg
725} {1 {expected boolean value but got "who cares?"}}
726test pack-12.13 {command options and errors} {
727    pack forget .pack.a .pack.b .pack.c .pack.d
728    list [catch {pack .pack.a -fill z} msg] $msg
729} {1 {bad fill style "z": must be none, x, y, or both}}
730test pack-12.14 {command options and errors} {
731    pack forget .pack.a .pack.b .pack.c .pack.d
732    list [catch {pack .pack.a -in z} msg] $msg
733} {1 {bad window path name "z"}}
734set pad [winfo pixels .pack 1c]
735test pack-12.15 {command options and errors} {
736    pack forget .pack.a .pack.b .pack.c .pack.d
737    list [catch {pack .pack.a -padx abc} msg] $msg
738} {1 {bad pad value "abc": must be positive screen distance}}
739test pack-12.15.1 {command options and errors} {
740    pack forget .pack.a .pack.b .pack.c .pack.d
741    list [catch {pack .pack.a -padx {5 abc}} msg] $msg
742} {1 {bad 2nd pad value "abc": must be positive screen distance}}
743test pack-12.16 {command options and errors} {
744    pack forget .pack.a .pack.b .pack.c .pack.d
745    list [catch {pack .pack.a -padx -1} msg] $msg
746} {1 {bad pad value "-1": must be positive screen distance}}
747test pack-12.16.1 {command options and errors} {
748    pack forget .pack.a .pack.b .pack.c .pack.d
749    list [catch {pack .pack.a -padx {5 -1}} msg] $msg
750} {1 {bad 2nd pad value "-1": must be positive screen distance}}
751test pack-12.17 {command options and errors} {
752    pack forget .pack.a .pack.b .pack.c .pack.d
753    list [catch {pack .pack.a -pady abc} msg] $msg
754} {1 {bad pad value "abc": must be positive screen distance}}
755test pack-12.17.1 {command options and errors} {
756    pack forget .pack.a .pack.b .pack.c .pack.d
757    list [catch {pack .pack.a -pady {0 abc}} msg] $msg
758} {1 {bad 2nd pad value "abc": must be positive screen distance}}
759test pack-12.18 {command options and errors} {
760    pack forget .pack.a .pack.b .pack.c .pack.d
761    list [catch {pack .pack.a -pady -1} msg] $msg
762} {1 {bad pad value "-1": must be positive screen distance}}
763test pack-12.18.1 {command options and errors} {
764    pack forget .pack.a .pack.b .pack.c .pack.d
765    list [catch {pack .pack.a -pady {0 -1}} msg] $msg
766} {1 {bad 2nd pad value "-1": must be positive screen distance}}
767test pack-12.19 {command options and errors} {
768    pack forget .pack.a .pack.b .pack.c .pack.d
769    list [catch {pack .pack.a -ipadx abc} msg] $msg
770} {1 {bad ipadx value "abc": must be positive screen distance}}
771test pack-12.20 {command options and errors} {
772    pack forget .pack.a .pack.b .pack.c .pack.d
773    list [catch {pack .pack.a -ipadx -1} msg] $msg
774} {1 {bad ipadx value "-1": must be positive screen distance}}
775test pack-12.20.1 {command options and errors} {
776    pack forget .pack.a .pack.b .pack.c .pack.d
777    list [catch {pack .pack.a -ipadx {5 5}} msg] $msg
778} {1 {bad ipadx value "5 5": must be positive screen distance}}
779test pack-12.21 {command options and errors} {
780    pack forget .pack.a .pack.b .pack.c .pack.d
781    list [catch {pack .pack.a -ipady abc} msg] $msg
782} {1 {bad ipady value "abc": must be positive screen distance}}
783test pack-12.22 {command options and errors} {
784    pack forget .pack.a .pack.b .pack.c .pack.d
785    list [catch {pack .pack.a -ipady -1} msg] $msg
786} {1 {bad ipady value "-1": must be positive screen distance}}
787test pack-12.22.1 {command options and errors} {
788    pack forget .pack.a .pack.b .pack.c .pack.d
789    list [catch {pack .pack.a -ipady {5 5}} msg] $msg
790} {1 {bad ipady value "5 5": must be positive screen distance}}
791test pack-12.23 {command options and errors} {
792    pack forget .pack.a .pack.b .pack.c .pack.d
793    list [catch {pack .pack.a -side bac} msg] $msg
794} {1 {bad side "bac": must be top, bottom, left, or right}}
795test pack-12.24 {command options and errors} {
796    pack forget .pack.a .pack.b .pack.c .pack.d
797    list [catch {pack .pack.a -lousy bac} msg] $msg
798} {1 {bad option "-lousy": must be -after, -anchor, -before, -expand, -fill, -in, -ipadx, -ipady, -padx, -pady, or -side}}
799test pack-12.25 {command options and errors} {
800    pack forget .pack.a .pack.b .pack.c .pack.d
801    list [catch {pack .pack.a -padx} msg] $msg
802} {1 {extra option "-padx" (option with no value?)}}
803test pack-12.26 {command options and errors} {
804    pack forget .pack.a .pack.b .pack.c .pack.d
805    list [catch {pack .pack.a ? 22} msg] $msg
806} {1 {bad option "?": must be -after, -anchor, -before, -expand, -fill, -in, -ipadx, -ipady, -padx, -pady, or -side}}
807test pack-12.27 {command options and errors} {
808    pack forget .pack.a .pack.b .pack.c .pack.d
809    list [catch {pack .pack.a -in .} msg] $msg
810} {1 {can't pack .pack.a inside .}}
811test pack-12.28 {command options and errors} {
812    pack forget .pack.a .pack.b .pack.c .pack.d
813    frame .pack.a.a
814    list [catch {pack .pack.a.a -in .pack.b} msg] $msg
815} {1 {can't pack .pack.a.a inside .pack.b}}
816test pack-12.29 {command options and errors} {
817    pack forget .pack.a .pack.b .pack.c .pack.d
818    list [catch {pack .pack.a -in .pack.a} msg] $msg
819} {1 {can't pack .pack.a inside itself}}
820test pack-12.30 {command options and errors} {
821    pack forget .pack.a .pack.b .pack.c .pack.d
822    pack .pack.a .pack.b .pack.c .pack.d
823    pack forget .pack.a .pack.d
824    pack slaves .pack
825} {.pack.b .pack.c}
826test pack-12.31 {command options and errors} {
827    pack forget .pack.a .pack.b .pack.c .pack.d
828    .pack configure -width 300 -height 200
829    pack propagate .pack 0
830    pack .pack.a
831    update
832    set result [list [winfo reqwidth .pack] [winfo reqheight .pack]]
833    pack propagate .pack 1
834    update
835    lappend result [winfo reqwidth .pack] [winfo reqheight .pack]
836    set result
837} {300 200 20 40}
838test pack-12.32 {command options and errors} {
839    set result [pack propagate .pack.d]
840    pack propagate .pack.d 0
841    lappend result [pack propagate .pack.d]
842    pack propagate .pack.d 1
843    lappend result [pack propagate .pack.d]
844    set result
845} {1 0 1}
846test pack-12.33 {command options and errors} {
847    pack forget .pack.a .pack.b .pack.c .pack.d
848    list [catch {pack propagate .dum} msg] $msg
849} {1 {bad window path name ".dum"}}
850test pack-12.34 {command options and errors} {
851    pack forget .pack.a .pack.b .pack.c .pack.d
852    list [catch {pack propagate .pack foo} msg] $msg
853} {1 {expected boolean value but got "foo"}}
854test pack-12.35 {command options and errors} {
855    pack forget .pack.a .pack.b .pack.c .pack.d
856    list [catch {pack propagate .pack foo bar} msg] $msg
857} {1 {wrong # args: should be "pack propagate window ?boolean?"}}
858test pack-12.36 {command options and errors} {
859    pack forget .pack.a .pack.b .pack.c .pack.d
860    list [catch {pack slaves} msg] $msg
861} {1 {wrong # args: should be "pack option arg ?arg ...?"}}
862test pack-12.37 {command options and errors} {
863    pack forget .pack.a .pack.b .pack.c .pack.d
864    list [catch {pack slaves a b} msg] $msg
865} {1 {wrong # args: should be "pack slaves window"}}
866test pack-12.38 {command options and errors} {
867    pack forget .pack.a .pack.b .pack.c .pack.d
868    list [catch {pack slaves .x} msg] $msg
869} {1 {bad window path name ".x"}}
870test pack-12.39 {command options and errors} {
871    pack forget .pack.a .pack.b .pack.c .pack.d
872    list [catch {pack slaves .pack.a} msg] $msg
873} {0 {}}
874test pack-12.40 {command options and errors} {
875    pack forget .pack.a .pack.b .pack.c .pack.d
876    list [catch {pack lousy .pack} msg] $msg
877} {1 {bad option "lousy": must be configure, forget, info, propagate, or slaves}}
878
879pack .pack.right -side right
880pack .pack.bottom -side bottom
881test pack-13.1 {window deletion} {
882    pack forget .pack.a .pack.b .pack.c .pack.d
883    pack .pack.a .pack.d .pack.b .pack.c -side top
884    update
885    destroy .pack.d
886    update
887    set result [list [pack slaves .pack] [winfo geometry .pack.a] \
888	    [winfo geometry .pack.b] [winfo geometry .pack.c]]
889} {{.pack.right .pack.bottom .pack.a .pack.b .pack.c} 20x40+30+0 50x30+15+40 80x80+0+70}
890
891test pack-14.1 {respond to changes in expansion} {
892    pack forget .pack.a .pack.b .pack.c .pack.d
893    wm geom .pack {}
894    pack .pack.a
895    update
896    set result [winfo geom .pack.a]
897    wm geom .pack 400x300
898    update
899    lappend result [winfo geom .pack.a]
900    pack .pack.a -expand true -fill both
901    update
902    lappend result [winfo geom .pack.a]
903} {20x40+0+0 20x40+90+0 200x150+0+0}
904wm geom .pack {}
905
906test pack-15.1 {managing geometry with -in option} {
907    pack forget .pack.a .pack.b .pack.c .pack.d
908    pack .pack.a -side top
909    frame .pack.f
910    lower .pack.f
911    pack .pack.f -side top
912    frame .pack.f.f2
913    lower .pack.f.f2
914    pack .pack.f.f2 -side top
915    pack .pack.b -in .pack.f.f2
916    update
917    set result [winfo geom .pack.b]
918    pack unpack .pack.a
919    update
920    lappend result [winfo geom .pack.b]
921} {50x30+0+40 50x30+0+0}
922catch {destroy .pack.f}
923test pack-15.2 {managing geometry with -in option} {
924    pack forget .pack.a .pack.b .pack.c .pack.d
925    frame .pack.f
926    lower .pack.f
927    pack .pack.a -in .pack.f -side top
928    update
929    set result [winfo ismapped .pack.a]
930    place .pack.f -x 30 -y 45
931    update
932    lappend result [winfo ismapped .pack.a] [winfo geometry .pack.a]
933    place forget .pack.f
934    update
935    lappend result [winfo ismapped .pack.a]
936} {0 1 20x40+30+45 0}
937catch {destroy .pack.f}
938test pack-15.3 {managing geometry with -in option} {
939    pack forget .pack.a .pack.b .pack.c .pack.d
940    pack .pack.a -side top
941    frame .pack.f
942    lower .pack.f
943    pack .pack.f -side top
944    frame .pack.f.f2
945    lower .pack.f.f2
946    pack .pack.f.f2 -side top
947    pack .pack.b -in .pack.f.f2
948    update
949    set result [winfo ismapped .pack.b]
950    pack unpack .pack.f
951    update
952    lappend result [winfo ismapped .pack.b]
953} {1 0}
954catch {destroy .pack.f}
955test pack-15.4 {managing geometry with -in option} {
956    pack forget .pack.a .pack.b .pack.c .pack.d
957    foreach i {1 2} {
958	frame .pack.f$i -width 100 -height 40 -bd 2 -relief raised
959	lower .pack.f$i
960	pack propagate .pack.f$i 0
961	pack .pack.f$i -side top
962    }
963    pack .pack.b -in .pack.f1 -side right
964    update
965    set result {}
966    lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
967    pack .pack.b -in .pack.f2 -side bottom
968    update
969    lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
970    .pack.f1 configure -width 50 -height 20
971    update
972    lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
973    pack forget .pack.b
974    update
975    lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
976} {50x30+48+5 1 50x30+25+48 1 50x30+25+28 1 50x30+25+28 0}
977catch {destroy .pack.f1 .pack.f2}
978test pack-15.5 {managing geometry with -in option} {
979    pack forget .pack.a .pack.b .pack.c .pack.d
980    foreach i {1 2} {
981	frame .pack.f$i -width 100 -height 20 -bd 2 -relief raised
982	lower .pack.f$i
983	pack propagate .pack.f$i 0
984	pack .pack.f$i -side top
985    }
986    pack .pack.b -in .pack.f2 -side top
987    update
988    set result {}
989    lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
990    pack .pack.a -before .pack.b -side top
991    update
992    lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
993} {50x16+25+22 1 50x16+25+22 0}
994catch {destroy .pack.f1 .pack.f2}
995
996test pack-16.1 {geometry manager name} {
997    pack forget .pack.a .pack.b .pack.c .pack.d
998    set result {}
999    lappend result [winfo manager .pack.a]
1000    pack .pack.a
1001    lappend result [winfo manager .pack.a]
1002    pack forget .pack.a
1003    lappend result [winfo manager .pack.a]
1004} {{} pack {}}
1005
1006test pack-17.1 {PackLostSlaveProc procedure} {
1007    pack forget .pack.a .pack.b .pack.c .pack.d
1008    pack .pack.a
1009    update
1010    place .pack.a -x 40 -y 10
1011    update
1012    list [winfo manager .pack.a] [winfo geometry .pack.a] \
1013	[catch {pack info .pack.a} msg] $msg
1014} {place 20x40+40+10 1 {window ".pack.a" isn't packed}}
1015
1016test pack-18.1 {unmap slaves when master unmapped} {tempNotPc} {
1017
1018    # adjust the position of .pack before test to avoid a screen switch
1019    # that occurs with window managers that have desktops four times as big
1020    # as the screen (screen switch causes scale and other tests to fail).
1021
1022    wm geometry .pack +100+100
1023
1024    # On the PC, when the width/height is configured while the window is 
1025    # unmapped, the changes don't take effect until the window is remapped.
1026    # Who knows why?
1027
1028    eval destroy [winfo child .pack]
1029    frame .pack.a -width 100 -height 50 -relief raised -bd 2
1030    pack .pack.a
1031    update
1032    set result [winfo ismapped .pack.a]
1033    wm iconify .pack
1034    update
1035    lappend result [winfo ismapped .pack.a]
1036    .pack.a configure -width 200 -height 75
1037    update
1038    lappend result [winfo width .pack.a ] [winfo height .pack.a] \
1039	[winfo ismapped .pack.a]
1040    wm deiconify .pack
1041    update
1042    lappend result [winfo ismapped .pack.a]
1043} {1 0 200 75 0 1}
1044test pack-18.2 {unmap slaves when master unmapped} {
1045
1046    # adjust the position of .pack before test to avoid a screen switch
1047    # that occurs with window managers that have desktops four times as big
1048    # as the screen (screen switch causes scale and other tests to fail).
1049
1050    wm geometry .pack +100+100
1051    eval destroy [winfo child .pack]
1052    frame .pack.a -relief raised -bd 2
1053    frame .pack.b -width 70 -height 30 -relief sunken -bd 2
1054    pack .pack.a
1055    pack .pack.b -in .pack.a
1056    update
1057    set result [winfo ismapped .pack.b]
1058    wm iconify .pack
1059    update
1060    lappend result [winfo ismapped .pack.b]
1061    .pack.b configure -width 100 -height 30
1062    update
1063    lappend result [winfo width .pack.b ] [winfo height .pack.b] \
1064	[winfo ismapped .pack.b]
1065    wm deiconify .pack
1066    update
1067    lappend result [winfo ismapped .pack.b]
1068} {1 0 100 30 0 1}
1069
1070test pack-19.1 {test respect for internalborder} {
1071    catch {eval pack forget [pack slaves .pack]}
1072    destroy .pack.l .pack.lf
1073    wm geometry .pack 200x200
1074    frame .pack.l -width 15 -height 10
1075    labelframe .pack.lf -labelwidget .pack.l
1076    pack .pack.lf -fill both -expand 1
1077    frame .pack.lf.f
1078    pack .pack.lf.f -fill both -expand 1
1079    update
1080    set res [list [winfo geometry .pack.lf.f]]
1081    .pack.lf configure -labelanchor e -padx 3 -pady 5
1082    update
1083    lappend res [winfo geometry .pack.lf.f]
1084    destroy .pack.l .pack.lf
1085    set res
1086} {196x188+2+10 177x186+5+7}
1087test pack-19.2 {test support for minreqsize} {
1088    catch {eval pack forget [pack slaves .pack]}
1089    destroy .pack.l .pack.lf
1090    wm geometry .pack {}
1091    frame .pack.l -width 150 -height 100
1092    labelframe .pack.lf -labelwidget .pack.l
1093    pack .pack.lf -fill both -expand 1
1094    frame .pack.lf.f -width 20 -height 25
1095    pack .pack.lf.f
1096    update
1097    set res [list [winfo geometry .pack.lf]]
1098    .pack.lf configure -labelanchor ws
1099    update
1100    lappend res [winfo geometry .pack.lf]
1101    destroy .pack.l .pack.lf
1102    set res
1103} {162x127+0+0 172x112+0+0}
1104
1105destroy .pack
1106foreach i {pack1 pack2 pack3 pack4} {
1107    rename $i {}
1108}
1109
1110# cleanup
1111cleanupTests
1112return
1113