From 2cb74285f2d3594505c682851f59449520957937 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 21 Feb 2003 01:57:51 +0000 Subject: * tests/panedwindow.test: * generic/tkPanedWindow.c (ValidSashIndex): corrected to note that 2 panes must exist before any one sash does. [tcllib Bug #689258] --- generic/tkPanedWindow.c | 9 ++++-- tests/panedwindow.test | 83 ++++++++++++++++++++++++++++++------------------- 2 files changed, 57 insertions(+), 35 deletions(-) diff --git a/generic/tkPanedWindow.c b/generic/tkPanedWindow.c index a28f7e8..3a1fa98 100644 --- a/generic/tkPanedWindow.c +++ b/generic/tkPanedWindow.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkPanedWindow.c,v 1.11 2003/02/20 21:08:30 pspjuth Exp $ + * RCS: @(#) $Id: tkPanedWindow.c,v 1.12 2003/02/21 01:57:51 hobbs Exp $ */ #include "tkPort.h" @@ -203,8 +203,12 @@ static char * ComputeSlotAddress _ANSI_ARGS_((char *recordPtr, int offset)); static int PanedWindowIdentifyCoords _ANSI_ARGS_((PanedWindow *pwPtr, Tcl_Interp *interp, int x, int y)); +/* + * Sashes are between panes only, so there is one less sash than slaves + */ + #define ValidSashIndex(pwPtr, sash) \ - (((sash) >= 0) && ((sash) < (pwPtr)->numSlaves)) + (((sash) >= 0) && ((sash) < ((pwPtr)->numSlaves-1))) static Tk_GeomMgr panedWindowMgrType = { "panedwindow", /* name */ @@ -2240,7 +2244,6 @@ MoveSash(pwPtr, sash, diff) * Growing the pane, at the expense of panes to the right. */ - /* * First check that moving the sash the requested distance will not * leave it off the screen. If necessary, clip the requested diff diff --git a/tests/panedwindow.test b/tests/panedwindow.test index 2d77ed6..99a75c7 100644 --- a/tests/panedwindow.test +++ b/tests/panedwindow.test @@ -6,7 +6,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: panedwindow.test,v 1.6 2003/02/20 21:08:30 pspjuth Exp $ +# RCS: @(#) $Id: panedwindow.test,v 1.7 2003/02/21 01:57:51 hobbs Exp $ package require tcltest 2.1 namespace import -force tcltest::configure @@ -243,16 +243,30 @@ test panedwindow-6.8 {sash coord subcommand, errors} { set result } [list 1 "invalid sash index" 1 "invalid sash index" 1 "invalid sash index"] test panedwindow-6.9 {sash coord subcommand, errors} { + # There are no sashes until you have 2 panes panedwindow .p .p add [frame .p.f] set result [list \ [catch {.p sash coord -1} msg] $msg \ + [catch {.p sash coord 0} msg] $msg \ + [catch {.p sash coord 1} msg] $msg \ + ] + destroy .p + set result +} [list 1 "invalid sash index" 1 "invalid sash index" 1 "invalid sash index"] +test panedwindow-6.10 {sash coord subcommand, errors} { + # There are no sashes until you have 2 panes + panedwindow .p + .p add [frame .p.f] [frame .p.f2] + set result [list \ + [catch {.p sash coord -1} msg] $msg \ [catch {.p sash coord 0} msg] \ [catch {.p sash coord 1} msg] $msg \ + [catch {.p sash coord 2} msg] $msg \ ] destroy .p set result -} [list 1 "invalid sash index" 0 1 "invalid sash index"] +} [list 1 "invalid sash index" 0 1 "invalid sash index" 1 "invalid sash index"] test panedwindow-8.1 {sash mark subcommand, errors} { panedwindow .p @@ -371,67 +385,66 @@ test panedwindow-11.1 {sash place subcommand, errors} { set result } [list 1 "wrong # args: should be \".p sash place index x y\""] test panedwindow-11.2 {sash place subcommand, errors} { - panedwindow .p - set result [list [catch {.p sash place foo bar baz} msg] $msg] destroy .p - set result + panedwindow .p + list [catch {.p sash place foo bar baz} msg] $msg } [list 1 "expected integer but got \"foo\""] test panedwindow-11.3 {sash place subcommand, errors} { - panedwindow .p - set result [list [catch {.p sash place 0 foo bar} msg] $msg] destroy .p - set result + panedwindow .p + list [catch {.p sash place 0 foo bar} msg] $msg } [list 1 "invalid sash index"] test panedwindow-11.4 {sash place subcommand, errors} { + destroy .p .b .c panedwindow .p .p add [button .b] [button .c] - set result [list [catch {.p sash place 0 foo bar} msg] $msg] - destroy .p .b .c - set result + list [catch {.p sash place 0 foo bar} msg] $msg } [list 1 "expected integer but got \"foo\""] test panedwindow-11.5 {sash place subcommand, errors} { + destroy .p .f .c .b panedwindow .p .p add [button .b] [button .c] - set result [list [catch {.p sash place 0 0 bar} msg] $msg] - destroy .p .b .c - set result + list [catch {.p sash place 0 0 bar} msg] $msg } [list 1 "expected integer but got \"bar\""] test panedwindow-11.6 {sash place subcommand, moves sash} { + destroy .p .f .c .b panedwindow .p -borderwidth 0 -sashpad 0 -sashwidth 4 .p add [frame .f -width 20 -height 20] [button .c] .p sash place 0 10 0 - set result [.p sash coord 0] - destroy .p .f .c - set result + .p sash coord 0 } [list 10 0] test panedwindow-11.7 {sash place subcommand, moves sash} { + destroy .p .f .c panedwindow .p -borderwidth 0 -sashpad 0 -sashwidth 4 -orient vertical .p add [frame .f -width 20 -height 20] [button .c] .p sash place 0 0 10 - set result [.p sash coord 0] - destroy .p .f .c - set result + .p sash coord 0 } [list 0 10] test panedwindow-11.8 {sash place subcommand, respects minsize} { + destroy .p .f .c panedwindow .p -borderwidth 0 -sashpad 0 -sashwidth 4 -showhandle false .p add [frame .f -width 20 -height 20] [button .c] -minsize 15 .p sash place 0 10 0 - set result [.p sash coord 0] - destroy .p .f .c - set result + .p sash coord 0 } [list 15 0] +test panedwindow-11.9 {sash place subcommand, respects minsize} { + destroy .p .f .c + panedwindow .p + .p add [frame .f -width 20 -height 20 -bg pink] + list [catch {.p sash place 0 2 0} msg] $msg +} [list 1 {invalid sash index}] test panedwindow-12.1 {moving sash changes size of pane to left} { + destroy .p .f .c panedwindow .p -borderwidth 0 -sashpad 0 -sashwidth 4 -showhandle false .p add [frame .f -width 20 -height 20] [button .c -text foobar] -sticky nsew .p sash place 0 30 0 pack .p update - set result [winfo width .f] - destroy .p .f .c - set result + winfo width .f } 30 test panedwindow-12.2 {moving sash changes size of pane to right} { + destroy .p .f .f2 panedwindow .p -showhandle false -borderwidth 0 -sashpad 0 -sashwidth 4 .p add [frame .f -width 20 -height 20] [frame .f2 -width 20 -height 20] pack .p @@ -440,18 +453,16 @@ test panedwindow-12.2 {moving sash changes size of pane to right} { .p sash place 0 30 0 update lappend result [winfo width .f2] - destroy .p .f .f2 - set result } {20 10} test panedwindow-12.3 {moving sash does not change reqsize of panedwindow} { + destroy .p .f .f2 panedwindow .p -showhandle false -borderwidth 0 -sashpad 0 -sashwidth 4 .p add [frame .f -width 20 -height 20] [frame .f2 -width 20 -height 20] .p sash place 0 30 0 - set result [winfo reqwidth .p] - destroy .p .f .f2 - set result + winfo reqwidth .p } 44 test panedwindow-12.4 {moving sash changes size of pane above} { + destroy .p .f .c panedwindow .p -showhandle false -borderwidth 0 -sashpad 0 -sashwidth 4 \ -orient vertical .p add [frame .f -width 20 -height 10] [button .c -text foobar] -sticky nsew @@ -463,6 +474,7 @@ test panedwindow-12.4 {moving sash changes size of pane above} { set result } 20 test panedwindow-12.5 {moving sash changes size of pane below} { + destroy .p .f .f2 panedwindow .p -showhandle false -borderwidth 0 -sashpad 0 -sashwidth 4 \ -orient vertical .p add [frame .f -width 20 -height 10] [frame .f2 -width 20 -height 10] @@ -486,6 +498,7 @@ test panedwindow-12.6 {moving sash does not change reqsize of panedwindow} { set result } [list 24 24] test panedwindow-12.7 {moving sash does not alter reqsize of widget} { + destroy .p .f .f2 panedwindow .p -showhandle false -borderwidth 0 -sashpad 0 -sashwidth 4 \ -orient vertical .p add [frame .f -width 20 -height 10] [frame .f2 -width 20 -height 10] @@ -496,6 +509,7 @@ test panedwindow-12.7 {moving sash does not alter reqsize of widget} { set result } [list 10 10] test panedwindow-12.8 {moving sash restricted to minsize} { + destroy .p .f .c panedwindow .p -showhandle false -borderwidth 0 -sashpad 0 -sashwidth 4 .p add [frame .f -width 20 -height 20] [button .c] -minsize 15 .p sash place 0 10 0 @@ -506,6 +520,7 @@ test panedwindow-12.8 {moving sash restricted to minsize} { set result } 15 test panedwindow-12.10 {moving sash restricted to minsize} { + destroy .p .f .c panedwindow .p -showhandle false -borderwidth 0 -sashpad 0 -sashwidth 4 \ -orient vertical .p add [frame .f -width 20 -height 30] [button .c] -minsize 10 @@ -738,6 +753,7 @@ test panedwindow-13.13 {vertical panedwindow reqwidth is max slave width} { set result } {20 20} test panedwindow-13.14 {panedwindow pane height overrides widget width} { + destroy .p panedwindow .p -showhandle false -borderwidth 0 -sashpad 0 -sashwidth 4 \ -orient vertical foreach win {.p.f .p.f2} {.p add [frame $win -width 20 -height 20]} @@ -747,7 +763,7 @@ test panedwindow-13.14 {panedwindow pane height overrides widget width} { set result [winfo height .p.f] .p paneconfigure .p.f -height 30 lappend result [winfo height .p.f] - destroy .p .p.f .p.f2 + destroy .p set result } [list 10 10] @@ -758,6 +774,7 @@ test panedwindow-14.1 {PanestructureProc, widget yields managements} { # This test should not cause a core dump, and it should not cause # a memory leak. + destroy .p .b panedwindow .p .p add [button .b] destroy .p @@ -771,6 +788,7 @@ test panedwindow-14.2 {PanedWindowLostSlaveProc, widget yields management} { # This test should not cause a core dump, and it should not cause a # memory leak. + destroy .p .b panedwindow .p .p add [button .b] pack .p @@ -787,6 +805,7 @@ set stickygets [list n s e w ns ns ne ne nw nw nes nes nsw nesw ""] set i 0 foreach s $stickysets g $stickygets { test panedwindow-15.[incr i] {panedwindow sticky settings} { + destroy .p .b panedwindow .p -showhandle false .p add [button .b] .p paneconfigure .b -sticky $s -- cgit v0.12