summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--generic/tkGrid.c3
-rw-r--r--generic/tkPack.c4
-rw-r--r--tests/packgrid.test32
4 files changed, 43 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 31ee37b..7835ace 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2009-09-19 Peter Spjuth <peter.spjuth@gmail.com>
+
+ * generic/tkGrid.c
+ * generic/tkPack.c
+ * tests/packgrid.test: Bug fix in grid/pack collision detect.
+ Faulty slave was not properly blocked from slave list. [Bug 2859912]
+
2009-09-14 Jeff Hobbs <jeffh@ActiveState.com>
* generic/tkMenuDraw.c (TkPostSubmenu): Fix reposting of submenu in
diff --git a/generic/tkGrid.c b/generic/tkGrid.c
index 6dbe9a3..2ea78c0 100644
--- a/generic/tkGrid.c
+++ b/generic/tkGrid.c
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkGrid.c,v 1.53 2009/08/19 23:02:00 pspjuth Exp $
+ * RCS: @(#) $Id: tkGrid.c,v 1.54 2009/09/18 22:35:00 pspjuth Exp $
*/
#include "tkInt.h"
@@ -3293,6 +3293,7 @@ ConfigureSlaves(
if (TkSetGeometryMaster(interp, masterPtr->tkwin, "grid")
!= TCL_OK) {
Tk_ManageGeometry(slave, NULL, NULL);
+ Unlink(slavePtr);
return TCL_ERROR;
}
masterPtr->flags |= ALLOCED_MASTER;
diff --git a/generic/tkPack.c b/generic/tkPack.c
index c113e6f..d57d2bf 100644
--- a/generic/tkPack.c
+++ b/generic/tkPack.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkPack.c,v 1.34 2009/08/19 23:02:00 pspjuth Exp $
+ * RCS: @(#) $Id: tkPack.c,v 1.35 2009/09/18 22:35:00 pspjuth Exp $
*/
#include "tkInt.h"
@@ -1261,6 +1261,7 @@ PackAfter(
if (TkSetGeometryMaster(interp, masterPtr->tkwin, "pack")
!= TCL_OK) {
Tk_ManageGeometry(tkwin, NULL, NULL);
+ Unlink(packPtr);
return TCL_ERROR;
}
masterPtr->flags |= ALLOCED_MASTER;
@@ -1793,6 +1794,7 @@ ConfigureSlaves(
if (TkSetGeometryMaster(interp, masterPtr->tkwin, "pack")
!= TCL_OK) {
Tk_ManageGeometry(slave, NULL, NULL);
+ Unlink(slavePtr);
return TCL_ERROR;
}
masterPtr->flags |= ALLOCED_MASTER;
diff --git a/tests/packgrid.test b/tests/packgrid.test
index cbbb6f0..66d4e4c 100644
--- a/tests/packgrid.test
+++ b/tests/packgrid.test
@@ -5,7 +5,7 @@
# Copyright (c) 2008 Peter Spjuth
# All rights reserved.
#
-# RCS: @(#) $Id: packgrid.test,v 1.1 2009/08/19 23:02:00 pspjuth Exp $
+# RCS: @(#) $Id: packgrid.test,v 1.2 2009/09/18 22:35:00 pspjuth Exp $
#
package require tcltest 2.2
@@ -97,6 +97,36 @@ test packgrid-1.6 {pack and grid in same master} -setup {
destroy .g
} -result {}
+test packgrid-1.7 {pack and grid in same master} -setup {
+ grid propagate . true
+ pack propagate . true
+ label .p -text PACK
+ label .g -text GRID
+} -body {
+ # Basic conflict should stop widget from being handled
+ grid .g
+ catch { pack .p }
+ pack slaves .
+} -cleanup {
+ destroy .p
+ destroy .g
+} -result {}
+
+test packgrid-1.8 {pack and grid in same master} -setup {
+ grid propagate . true
+ pack propagate . true
+ label .p -text PACK
+ label .g -text GRID
+} -body {
+ # Basic conflict should stop widget from being handled
+ pack .p
+ catch { grid .g }
+ grid slaves .
+} -cleanup {
+ destroy .p
+ destroy .g
+} -result {}
+
test packgrid-2.1 {pack and grid in same master, change propagation} -setup {
grid propagate . false
pack propagate . true