summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjenglish <jenglish@flightlab.com>2016-01-25 20:39:31 (GMT)
committerjenglish <jenglish@flightlab.com>2016-01-25 20:39:31 (GMT)
commit48ef3bc66f0806a4b54f4abb9888a5fc53e78d33 (patch)
treee8914babfcb2e9e1e915ef0391a1929360939051
parentac9442c6d07c589501a97b710d1608b1bb68a7dc (diff)
downloadtk-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.c2
-rw-r--r--tests/ttk/notebook.test21
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 {