diff options
author | jenglish <jenglish@flightlab.com> | 2016-01-25 20:39:31 (GMT) |
---|---|---|
committer | jenglish <jenglish@flightlab.com> | 2016-01-25 20:39:31 (GMT) |
commit | 48ef3bc66f0806a4b54f4abb9888a5fc53e78d33 (patch) | |
tree | e8914babfcb2e9e1e915ef0391a1929360939051 | |
parent | ac9442c6d07c589501a97b710d1608b1bb68a7dc (diff) | |
download | tk-48ef3bc66f0806a4b54f4abb9888a5fc53e78d33.zip tk-48ef3bc66f0806a4b54f4abb9888a5fc53e78d33.tar.gz tk-48ef3bc66f0806a4b54f4abb9888a5fc53e78d33.tar.bz2 |
NotebookAddCommand: fix off-by-one error counting objc/objv
when readding an already-managed window with arguments.
Bug reported on tcl-core by Sam Bromley (22 Jan 2016)
-rw-r--r-- | generic/ttk/ttkNotebook.c | 2 | ||||
-rw-r--r-- | tests/ttk/notebook.test | 21 |
2 files changed, 22 insertions, 1 deletions
diff --git a/generic/ttk/ttkNotebook.c b/generic/ttk/ttkNotebook.c index 551f4a6..dd757cb 100644 --- a/generic/ttk/ttkNotebook.c +++ b/generic/ttk/ttkNotebook.c @@ -902,7 +902,7 @@ static int NotebookAddCommand( if (tab->state == TAB_STATE_HIDDEN) { tab->state = TAB_STATE_NORMAL; } - if (ConfigureTab(interp, nb, tab, slaveWindow, objc-4,objv+4) != TCL_OK) { + if (ConfigureTab(interp, nb, tab, slaveWindow, objc-3,objv+3) != TCL_OK) { return TCL_ERROR; } diff --git a/tests/ttk/notebook.test b/tests/ttk/notebook.test index cdce020..3a2a6ff 100644 --- a/tests/ttk/notebook.test +++ b/tests/ttk/notebook.test @@ -468,6 +468,27 @@ test notebook-1817596-3 "insert/configure" -body { } -result [list [list .nb.l2 .nb.l0 .nb.l1] L2 L0 L1] -cleanup { destroy .nb } +test notebook-readd-1 "add same widget twice" -body { + pack [ttk::notebook .nb] + .nb add [ttk::button .nb.b1] -text "Button" + .nb add .nb.b1 + .nb tabs +} -result [list .nb.b1] -cleanup { destroy .nb } + +test notebook-readd-2 "add same widget twice, with options" -body { + pack [ttk::notebook .nb] + .nb add [ttk::button .nb.b1] -text "Tab label" + .nb add .nb.b1 -text "Changed tab label" + .nb tabs +} -result [list .nb.b1] -cleanup { destroy .nb } + +test notebook-readd-3 "insert same widget twice, with options" -body { + pack [ttk::notebook .nb] + .nb insert end [ttk::button .nb.b1] -text "Tab label" + .nb insert end .nb.b1 -text "Changed tab label" + .nb tabs +} -result [list .nb.b1] -cleanup { destroy .nb } + # See #1343984 test notebook-1343984-1 "don't autoselect on destroy - setup" -body { |